基于函数报错的信息获取

原理:函数传入的参数如果不符合规则的话就会报错,当我们把一个合法的语句作为这个函数的参数时,它会先执行一遍,然后再以这个语句的结果作为报错的信息返回回来这样我们就能查询到我们需要的信息了。
所以,这个基于函数报错的信息的获取有一个重要的前提,就是该页面能显示后台返回的报错结果!


以函数updatexml()为例
原型:updatesml(xml_document,xpathstring,new_value)
这个函数的第二个参数(xpathsrting)一定要是有效的,否则会报错,我们就是基于此报错来获取我们想要的信息,哦,该报错还会“吃掉”前面的一些内容,所以这个我先“喂”它一点东西,就是用concat函数把两个字段连成一个字段,就是在前面加点东西,让我们想要的信息能够完整的输出出来,
例如:updatexml(1,concat(0x7e,version()),1);这里的0x7e是~符号,输出结果如下:
在这里插入图片描述
这里有个有趣的地方:当你的concat函数使用不规范时,他会报下面的错误:
在这里插入图片描述
当出现如上图所示,就说明你的concat函数使用错误,检查一下是不是参数写错了吧。
这里还有一个知识:当你用这个报错返回的信息超过一行的时候,他会返回这个:我输入:
a’ and updatexml(1,concat(0x7e,(select table_schema from information_schema.tables where table_schema=‘pikachu’)),1)#

这时候可以在table_schema=‘pikachu’后面加上一个limit 0,1
输入:
a’ and updatexml(1,concat(0x7e,(select table_schema from information_schema.tables where table_schema=‘pikachu’ limit 0,1)),1)#
结果如下:
在这里插入图片描述
同样,你也可以limit 1,1或者limit 2,1都可以。


同样的,除了以上的updatexml函数,还有extractvalue()函数,floor()函数。


extractvalue()函数
语法:extractvalue(xml_document,xpath_string)
第一个参数xml——document是string格式,为xml格式文档对象名称,中文为dos
第二个参数xpath——string是xpath格式的字符串。
这里与updatexml()函数一样,xpath定位必须是有效的,如果无效则返回报错信息。
例如:
x’ and extractvalue(1,concat(0x7e,version()))#
得到的效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43814486/article/details/88940137