Buu摸鱼日记(8)

 

buu摸鱼日记(8)

[极客大挑战 2019]HardSQL

当年没做出来,现在回头一看并不是难题,只要找到方向

一开始以为是盲注,搞了半天发现不太对,是报错注入。刚好之前没怎么搞过这个,研究一下。

用burp 爆破一下,发现= 空格 等都被过滤了,呢么可以用like替代=,用括号替代空格。

然后利用updatexml报错注入

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

由于updatexml的第二个参数需要Xpath格式的字符串,以~开头的内容不是xml格式的语法,concat()函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果以错误的形式报出,这样就可以实现报错注入了。

就这样子,用基础的操作去打

username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#

password=2333

有一个问题就是flag太长,XPath回显只有32位,回显不完整,可以使用reverse函数来得到缺少部分