使用SQLMap进行POST参数注入主要有以下三种方法,具体操作如下:
1. 直接指定POST数据
通过 --data 参数直接传递POST请求体,格式为参数名=值&参数名=值:
sqlmap -u "http://example.com/login.php" --data="username=admin&password=123" --level=3 --risk=3
-u :目标URL。
--data :POST请求体,需替换为实际参数名和测试值。
--level/--risk :提高检测深度和风险等级以覆盖更多场景。
2. 结合BurpSuite抓包
通过BurpSuite拦截POST请求并保存为文件(如 post.txt ),再用 -r 加载文件:
bash
sqlmap -r post.txt -p "username,password" --dbs
-r :加载包含请求的文件。
-p :指定测试的参数名(可选)。
3. 自动识别表单
若目标页面存在表单,可用 --forms 自动分析:
sqlmap -u "http://example.com/login.php" --forms --batch
--forms :自动识别并测试表单字段。
--batch :跳过交互提示。
注意事项
- 权限与法律:仅对授权目标测试,避免法律风险。
- 参数冲突:若不同方法结果不一致,优先使用BurpSuite抓包(方法2)确保准确性。
- 高级参数:可结合 --cookie 、 --proxy 等应对复杂场景。
如需进一步优化(如绕过WAF),可添加 --tamper 脚本(如 space2hash.py )。