关于sqlmap的两个小坑

本文作者在使用sqlmap进行SQL注入测试时发现,不同版本的sqlmap对于模糊查询(%)的检测存在差异,导致注入检测不准确。通过分析,作者指出两个关键问题:1. 新版本移除了模糊查询的测试payload;2. 特定版本的sqlmap需要手动设置JSON参数为*才能注入。作者建议恢复模糊查询payload,并在遇到JSON参数时手动添加*,同时提倡结合工具和手工测试以确保安全性。

i春秋作家:__LSA__

0x00 概述

近日在利用sqlmap注入测试时遇到一个奇怪的现象,高版本sqlmap无法检测出注入,但是低版本的可以测出注入,并且能跑出数据不是误报,经过对比测试和查看sqlmap源码,发现两个小坑。

0x01 情景重现

注入点形式:json
……”whereparams”:[{“name”:”keyWord”,”value”:”test”}]}
可注入参数:value
sqlmap命令:
python sqlmap.py -r sqlpk.txt –flush-session -vv
sqlmap v1.2.11无法注入
 
sqlmap v1.2成功注入

### 关于 SQLMap 中多个括号闭合的技巧 在使用 `sqlmap` 进行渗透测试时,如果遇到复杂的 SQL 查询结构(例如嵌套查询或多层括号),可能需要手动调整 payload 来正确闭合括号并保持语法的有效性。以下是关于如何处理这种情况的具体说明: #### 1. **理解 SQL 的括号匹配机制** SQL 是一种基于上下文的语言,在构建复杂查询时,括号用于分组逻辑表达式或子查询。当尝试注入时,未正确闭合的括号可能导致语法错误[^1]。因此,了解目标系统的 SQL 结构至关重要。 #### 2. **利用 sqlmap 自动化功能** `sqlmap` 提供了一些选项来帮助绕过输入验证或修复语法问题。例如: - 使用 `--prefix/--suffix` 参数指定自定义前缀和后缀,以便包围注入部分。 - 如果存在多余的括号,可以通过添加合适的闭合符来解决问题。 示例命令如下: ```bash python sqlmap.py -u "http://example.com/vuln?id=1" --suffix="))" --tamper=between --batch ``` 在此例子中,通过 `--suffix` 添加额外的右括号以平衡潜在的左括号[^2]。 #### 3. **手动生成 Payload** 某些情况下,自动化工具可能无法完全适配特定场景的手工调试需求。此时可考虑以下方法: - 手动分析目标 URL 或 POST 数据包中的 SQL 片段; - 构造能够正常运行且不影响原有业务逻辑的注入语句。 假设原请求为: ```sql SELECT * FROM users WHERE id=(1); ``` 为了实现联合查询攻击,则需确保新加入的内容不会破坏原有的圆括号关系。最终形式可能是这样的: ```sql (SELECT CASE WHEN (ASCII(SUBSTR((SELECT database()),1,1))) THEN SLEEP(5) ELSE NULL END)-- - ``` 注意这里巧妙运用了函数调用来规避直接暴露在外层的大规模修改风险[^3]。 另外还需强调一点:实际操作过程中应始终遵循法律法规以及道德准则! ### 示例代码片段展示 下面给出一段简单的 Python 调用脚本作为参考: ```python import subprocess def run_sqlmap(url, suffix): command = [ 'python', 'sqlmap.py', '-u', url, '--suffix', suffix, '--batch' ] result = subprocess.run(command, capture_output=True) print(result.stdout.decode()) if __name__ == "__main__": target_url = "http://testphp.vulnweb.com/artists.php?artist=1" closing_parentheses = ")) AND 1=1-- " run_sqlmap(target_url, closing_parentheses) ``` 此脚本能自动执行带参数化的 sqlmap 测试流程。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值