靶场地址:165.227.106.113/post.php
解题:
一.分析题目
提示:
知道要用POST请求提交表单,看一下源码信息
得到可能需要用post请求方式去提交表单,并且传数据admin和password,这边提供两种方式
方法一:使用burpsuite
抓包改包
这边要注意的是不止要该GET为POST还要加入内容:username=admin&password=71urlkufpsdnlkadsf
并且对于POST请求的请求头:POST 请求通常需要包含Content-Type
头
POST /post.php HTTP/1.1Host: 165.227.106.113User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8Accept-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.2Accept-Encoding: gzip, deflate, brConnection: keep-aliveUpgrade-Insecure-Requests: 1Priority: u=0, iContent-Type: application/x-www-form-urlencodedContent-Length: 42username=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,会导致参数无法读取)