ctflearn-POST practice
数据内容类型对应的 Content-Type典型场景表单键值对登录表单、简单数据提交JSON 字符串API 接口、前后端数据交互文件 + 文本混合数据文件上传、复杂表单提交纯文本text/plain日志提交、简单文本传递XML 数据application/xml 或 text/xml传统系统数据交换核心原则:Content-Type必须与实际数据格式严格匹配,否则服务器会解析失败(如 JSON 数
·
解题:
一.分析题目
提示:

知道要用POST请求提交表单,看一下源码信息

得到可能需要用post请求方式去提交表单,并且传数据admin和password,这边提供两种方式
方法一:使用burpsuite
抓包改包
这边要注意的是不止要该GET为POST还要加入内容:username=admin&password=71urlkufpsdnlkadsf
并且对于POST请求的请求头:POST 请求通常需要包含Content-Type头
POST /post.php HTTP/1.1
Host: 165.227.106.113
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
username=admin&password=71urlkufpsdnlkadsf

最后可以得到FLAG
方法二:使用curl
直接打开命令框cmd然后输入
curl -X POST -d "username=admin&password=71urlkufpsdnlkadsf" http://165.227.106.113/post.php
得到FLAG

总结—对于Content-Type
| 数据内容类型 | 对应的 Content-Type | 典型场景 |
|---|---|---|
| 表单键值对 | application/x-www-form-urlencoded | 登录表单、简单数据提交 |
| JSON 字符串 | application/json | API 接口、前后端数据交互 |
| 文件 + 文本混合数据 | multipart/form-data; boundary=xxx | 文件上传、复杂表单提交 |
| 纯文本 | text/plain | 日志提交、简单文本传递 |
| XML 数据 | application/xml 或 text/xml | 传统系统数据交换 |
核心原则:Content-Type必须与实际数据格式严格匹配,否则服务器会解析失败(如 JSON 数据用了表单的 Content-Type,会导致参数无法读取)
更多推荐


所有评论(0)