web105
源码
highlight_file(__FILE__); include('flag.php'); error_reporting(0); 关闭报错 $error='你还想要flag嘛?'; $suces='既然你想要那给你吧!'; foreach($_GET as $key => $value){ 遍历GET参数 if($key==='error'){ die("what are you doing?!"); } $$key=$$value; }foreach($_POST as $key => $value){ if($value==='flag'){ die("what are you doing?!"); } $$key=$$value; } if(!($_POST['flag']==$flag)){ die($error); } echo "your are good".$flag."\n"; die($suces); ?>
&&应用 $hell="abc"; $$hell="def";等同于$abc="def";
这里的&&把key的值变为了变量所以可以通过$error和$$suces进行输入flag
方法1
第一个if语句GET的值不能等于error,第二个if把flag过滤掉了。
可以把两个结合起来进行绕过先在GET里传入一个值为flag的变量然后在POST里获得从GET中传入的变量
方法2
通过suces来获取flag,GET传入suces=flag,下面还有一个if语句需要绕过if(!($_POST['flag']==$flag)),所以还要传入一个变量flag来绕过