[HITCON 2017]SSRFme

[HITCON 2017]SSRFme

开门见山,进入页面直接就给了php代码:

10.244.80.206 <?php
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
    }

    echo $_SERVER["REMOTE_ADDR"];

    $sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
    @mkdir($sandbox);
    @chdir($sandbox);

    $data = shell_exec("GET " . escapeshellarg($_GET["url"]));
    $info = pathinfo($_GET["filename"]);
    $dir  = str_replace(".", "", basename($info["dirname"]));
    @mkdir($dir);
    @chdir($dir);
    @file_put_contents(basename($info["basename"]), $data);
    highlight_file(__FILE__);

审计代码得知,前面返回了我的ip,与orange组合md5加密得到sandbox路径

路径为:/sandbox/2eeed2f9aeae6311b507ada8fb98809e/

通过url输入会以GET命令执行,执行了之后会被存到我们以filename命名的文件中,尝试读取根目录,并创建a文件:payload:/?url=/&filename=a,然后返回到路径中查看内容,发现了flag和readflag,应该是要通过readflag来读取flag

 

GET底层实使用的是open函数,open函数可以执行命令,简单来说我们如果要使用GET file:|id,就必须要满足id这个文件存在。我们需要执行/readflag,所以需要创建一个/readflag文件,构造payload:/?url=/&filename=|/readflag

然后利用file函数执行命令再次构造payload:/?url=file:|/readflag&filename=a,执行完之后再次返回路径中查看得到flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值