您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页CTFHUB-POST请求

CTFHUB-POST请求

来源:欧得旅游网

题目提示:这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.

一、知识点

1.什么是gopher协议?

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

2.Gopher协议格式

URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流
  • gopher的默认端口是70
  • 如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码

3.POST请求

POST请求里面发现有4个参数为必要参数:

POST /ssrf/base/post.php HTTP/1.1
host:192.168.0.109
Content-Type:application/x-www-form-urlencoded
Content-Length:11

4.形成原因

二.解题

1)先访问index文件 发现curl请求数据的漏洞

curl函数的意义

例:

// 创建一个新cURL资源
$ch = curl_init();                                                        $ch        由 curl_init() 返回的 cURL 句柄。

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.w3cschool.cc/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

// 关闭cURL资源,并且释放系统资源
curl_close($ch);

其余的curl函数用处 可以参考

2.)

构造如下payload进行ssrf,从目标机本地访问flag.php

一种是在bp上进行访问发现key; 一种是在题目环境里 查看源代码 发现key

3.)

构造Gopher数据

首先记住php接受数据的时候会对数据进行一次unicode解码

所以构造的数据要进行二次编码

构造的payload:

POST /flag.php HTTP/1.1

Host:127.0.0.1:80Content-Length:36  //此处的长度为key的长度

Content-Type:application/x-www-form-urlencoded

key=f91b51e0743019e5e94095c9960e757b //后面需要接一个回车表示结束

先进行第一次url编码

其中,需要将 %0A 替换成 %0D%0A ,因为%0A是linux系统的换行符,我们是Windows系统,因此需要换成 %0D%0A或%0d%0a

再进行第二次编码:

因为我们是通过curl的伪协议:gopher发送请求包,因此需要第二次编码

数据包准备好后,就可以向flag.php文件发送了

以上步骤用网上查到的脚本一步得出数据包

4.)

把得到的数据包放在url上 得出本题的flag

https:///qq_44418229/article/details/125221655

Gopher协议在SSRF漏洞中的深入研究(附视频讲解) - Margin的文章 - 知乎
https://zhuanlan.zhihu.com/p/112055947

主要参考资料:

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务