web入门-web91
源码:
show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){
if(preg_match('/^php$/i', $a)){
echo 'hacker';
}
else{
echo $flag;
}
}
else{
echo 'nonononono';
}
由代码可知,我们想要获得flag只需要在第一关让它检索到“php”,第二关让它检索不到“php”即可。
而后面的才是知识点所在:
第一个使用了'/im',这意味着i(忽略大小写)和m(多行模式)。第二个只使用了'i',也就是忽略大小写。
在这里,你可以利用多行模式。如果你将'cmd'参数设置为'php\nPHP',那么第一次检查会通过(因为它会在多行中查找'php',并忽略大小写),但第二次检查会失败(因为它只在单行中查找'php',并且不会忽略大小写)。
payload:php%0aPHP