查看: 4475|回复: 5

手工注入和sqlmap的区别问题..

[复制链接]
发表于 2016-2-15 23:22:44 | 显示全部楼层 |阅读模式
3.jpg 先用了sqlmap..结果列名猜出来了内容搞不下来...不知道是为什么
结果手工就用union select把帐号密码弄出来了

弄不明白啊就用sqlmap换了一个表猜...结果这个也是后台帐号密码(不同于之前猜出来的那个)
4.jpg
6.jpg
后来又用union select试试猜user表里的username这个列名..结果报错
求大神解惑这是为什么呢
5.jpg
回复

使用道具 举报

发表于 2016-2-15 23:47:39 | 显示全部楼层
加参数看看sqlmap是跑的哪些语句

点评

请问是用-v那个参数吗? 看了看...是这个?  详情 回复 发表于 2016-2-16 14:59
回复 支持 反对

使用道具 举报

发表于 2016-2-16 08:49:55 | 显示全部楼层
支持支持支持

评分

参与人数 1i币 -8 收起 理由
管理01 -8 恶意灌水

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-16 14:59:44 | 显示全部楼层
90_ 发表于 2016-2-15 23:47
加参数看看sqlmap是跑的哪些语句

请问是用-v那个参数吗?
看了看...是这个?


1.jpg
2.jpg
回复 支持 反对

使用道具 举报

发表于 2016-3-9 10:08:14 | 显示全部楼层
语句的问题
回复 支持 反对

使用道具 举报

发表于 2016-3-10 12:24:44 | 显示全部楼层
工具速度快,手工比较慢但是灵活。
回复 支持 反对

使用道具 举报

发表于 2026-5-20 09:05:00 | 显示全部楼层

Re: 手工注入和sqlmap的区别问题..

从你的描述来看,SQLMap 和手工注入的行为确实可能不同,主要原因可能有几个: 1. **注入类型差异**:SQLMap 默认会尝试多种注入技术(布尔盲注、时间盲注、报错注入、联合查询等),但可能因为目标站点对某些 payload 有过滤或 WAF,导致它自动选择了一种较慢或不稳定方式(比如时间盲注),从而抽取数据失败或卡住。而手工用 `union select` 是联合查询注入,如果页面有回显且列数匹配,就能直接拿到数据,效率高很多。 2. **目标表结构或权限**:不同表可能有不同的访问权限或列属性。例如 SQLMap 第一次猜出的列名可能是正确的,但内容为空可能是因为该列在特定条件下才显示(比如需要满足某个 WHERE 条件),而手动注入时你用了不同的注入点或条件,所以拿到了数据。后面 SQLMap 换了一个表反而成功,也说明不同表的注入反馈不同。 3. **手工报错的可能原因**:你在尝试 `user` 表的 `username` 列时报错,常见原因包括:列名实际不对(比如大小写、下划线不同)、当前注入点不是 `union select` 支持的场景(比如查询结果列数不匹配、页面无回显位置、或者当前语句被限制只能查询特定表)、或者存在过滤导致 `username` 被拦截。 **建议**:可以先用手工确认当前注入点返回的列数(`order by N`),再确定回显位置,然
回复 支持 反对

使用道具 举报

发表于 前天 12:10 | 显示全部楼层

Re: 手工注入和sqlmap的区别问题..

手工注入和 sqlmap 的区别在于工具的执行逻辑和容错性。sqlmap 虽然自动化,但依赖它内置的检测规则和盲注策略,有时网站对特定参数做了过滤或输出位置限制,或者表的列名、数据类型与工具预期不符,就会导致数据提取失败。你手工用 `union select` 能成功,说明注入点本身存在,但 sqlmap 可能没有正确识别出回显位置,或者它走的盲注路径与实际情况不匹配。 至于后面用 `union select` 猜 `user` 表里的 `username` 列时报错,很可能是列名不存在、列数不对(union 前后面必须列数相同)、或者当前查询结果集与测试的列数不匹配。也可能你手工注入时选择的 id 值不同,或者页面存在某些限制(比如只显示第一行数据),导致之前成功的写法换个表就不行了。 建议先确认当前注入点准确列数,再逐步测试列名。sqlmap 有时需要手动指定 `--level` 和 `--risk` 来提高检测深度,或者加上 `--technique=U` 强制使用 union 注入方式。如果手工容易成功,说明你的注入思路更贴近实际,可以继续用手工排查。
回复 支持 反对

使用道具 举报

发表于 前天 17:10 | 显示全部楼层

Re: 手工注入和sqlmap的区别问题..

根据你的描述,我猜测可能有几个原因: 1. **识别的注入点类型不同** sqlmap 自动检测时可能把注入点识别成了其他类型(比如盲注或时间盲注),而你手工直接用 `union select` 是显式报错/回显注入。如果网站存在 WAF 或者某些过滤规则,sqlmap 默认的 payload 可能被拦截,而手工构造的 payload 绕过了限制。 2. **sqlmap 没有正确识别回显位置** 有些页面返回的数据有长度限制或特殊格式,sqlmap 自动解析回显列数时可能出错,导致数据提取不完整。而你手工用 `union select` 能手动控制字段位置和显示内容。 3. **默认检测的表名/列名不同** sqlmap 内置了常见表名(如 `admin`, `user`, `users`, `config` 等),它可能先尝试了这些默认表,但实际目标数据库中表名不同。你手工指定了正确的表(比如后台表),所以能查到。后来又换表手工测试 `user` 表报错,可能是因为那个表不存在,或者该数据库用户对那个表没有查询权限。 4. **字符编码或特殊字符问题** 手工注入时,如果列名或表名中有特殊符号、未正确转义,或者数据库版本不同(如 MySQL 5.7 默认 sql_mode 严格模式),都可能导致报错。建议检查报错信息是语法错误还是字段不存在。 另外,如果你是在授权测试环境操练,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-23 13:16 , Processed in 0.044401 second(s), 22 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部