[极客大挑战 2019]RCE ME
题目源码
|
过滤字母,数字,考虑url编码取反绕过、异或绕过(都是任意PHP版本适用)
原理
https://blog.csdn.net/mochu7777777/article/details/104631142
简单来说就是
异或绕过:未被禁用的字符异或后得到想要的字符,然后用.运算符拼接起来从而绕过。
url编码取反绕过:一些字符取反后可以得到想要的字符,但是这些字符通常是不可见的,所以要用URL编码一下才好编写payload。
PHP7特性:
phpinfo() php5/7都可执行 |
做题
先利用PHPinfo查看,禁用函数
?code=(~%8F%97%8F%96%91%99%90)(); //(phpinfo)(); |
解析
由于是@eval($code);
我们传入 ?code=(~%8F%97%8F%96%91%99%90)(); 的时候对于PHP,形如 (func_name)(),其中func_name可以是字符串,会执行这个func
若是整个phpinfo()全部编码,则不会执行,因为PHP还没取反前不知道传入的是可以执行的,所以PHP先取反后不会执行。
补充:
既然可以构造函数。那么也可以构造readfile/scandir这种,一些简单的题。直接看flag |
构造shell
目的构造:(assert)(eval($_POST['van'])); |
一些可以的
${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo |
连上shell
看到flag readflag
readflag打开看完应该是一个可执行的文件,执行完应该就有flag。
但是由于disable_function,所以要进行绕过
法一
利用蚁剑插件绕过disable_function,得翻墙下载,或者网上找资源,其次是在Linux下使用的。所以在kali安装后直接使用,使用后进入蚁剑终端执行/readflag即可
法二
看不大懂。不过理解就是编写恶意文件恶意函数,使系统在执行一个进程时候将优先级更高的恶意文件恶意函数先进行调用。
var/tmp有上传权限,可以上传恶意
难难,,挖坑待补。。
原理:
https://0xcreed.jxustctf.top/2019/10/bypass-disable-functions/#bypass-disable-functions
https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
参考:
https://blog.csdn.net/qq_45699846/article/details/123388028
https://blog.csdn.net/m0_62879498/article/details/124803318
https://blog.csdn.net/qq_45521281/article/details/105656737
https://guokeya.github.io/post/hwKOeu6uW/
https://www.cnblogs.com/yesec/p/12483631.html


