做命令执行题比前两种慢很多,到现在也只做了总数的五分之一,慢慢来吧。
web29
题目如下:
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
先GET一个参数c,如果c中没有’flag’字段,那么用eval()函数执行。 既然基本没什么限制,那就先看看有哪些文件
http:
发现名为flag的PHP文件 通过命令,将flag.php文件的内容复制到文件1.txt,因为flag字段有限制,所以部分用通配符?代替,改为fla?.php
http:
然后访问1.txt即可。
web30
题目变化如下:
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
}
这次多限制了system和php字段,不过没什么影响,还是一样的方法,只是用反引号代替system,用fla?.ph?代替flag.php
http:
然后访问1.txt即可。
web31
变动如下:
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
eval($c);
}
这里因为限制了c中的.和空格,前两道题的方法不再适用,这里我们选择构造另一个参数并执行
http:
因为只限制了c,所以对于参数1来说,就是没有限制,接着访问1.txt即可。
|