分析一波
error_reporting(0); //排除错误
if(isset($_GET['c'])){ //get传参不为空,执行if语句
$c = $_GET['c']; //get传参,赋值给变量c
if(!preg_match("/flag/i", $c)){ //过滤flag
eval($c); //执行c表达式
}
}else{
highlight_file(__FILE__);
}
命令执行查看有哪些文件
既然不能直接看flag,那就把flag复制到别的文件,再看
等等flag被过滤了,所以不能直接用。
通配符绕过
???在linux里面可以进行代替字母
/???/c?t flag.txt
*在linux里面可以进行模糊匹配
cat flag.* *进行模糊匹配php
?
代表一个字符*
代表一串字符
看结果
这个就是过滤flag,system,php
我用闭合代替system函数,就是用``把它包起来。
在计算机方面还是很常见的。
还是过滤flag,sysytem,php,cat,sort,shell,.,`
我们想想怎么绕过吧。
嵌套异或逃逸:
先给c传一个1,再用&给1赋值。跳过对c的绕过
查看