夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
通过一道题初识extractvalue报错注入
本文最后更新于 121 天前,其中的信息可能已经有所发展或是发生改变。

0x01 初识extractvalue()

简单地讲,extractvalue()是对XML文档进行查询的函数

语法: extractvalue(xml文档名,Xpath) Xpath:一种用于查找XML文档中的信息的语言。

0x02 extractvalue报错注入原理?

疑惑一: 为什么extractvalue函数可以用来进行报错注入,即extractvalue报错注入的原理是什么?

解疑 :函数的第二个参数是关键,我们也是通过控制第二个参数进行报错注入,xml文档中查找字符位置时,应为/xxx/xxx/xxx这种格式,当第二个参数格式不正确时,就会产生Xpath语法错误,并返回我们输入的错误语句的内容。

因此,当我们在第二个参数的位置上输入我们想要查询的信息,并且让其产生语法错误,即可通过函数的报错得到我们所需要的信息,如:

[例] select password from users where id=1 and (extractvalue(‘1’,concat(0x5c,select database())))

上述语句即可报错返回当前所在数据库名。

0x03 实战–实验吧 加了料的报错注入

题目直接给出了执行sql查询时的语句:

尝试了几个常见的注入手段,发现均被waf检测到,于是就开始尝试extractvalue报错注入。

但是这里需要用户输入两个值,usernamepassword,从语句中看到,我们不能够将后半段直接全部注释,这样会使得无法提交password值,这里就用到了注释符/**/,可以注释中间内容,所以可以先构造:

回显:XPATH syntax error: ‘\error_based_hpf’

于是我们就得到了当前数据库名: error_based_hpf

回显:XPATH syntax error: ‘\ffll44jj,users’

得到表名:ffll44jj,users

回显:XPATH syntax error: ‘\value’

得到字段名:value,继续:

回显:XPATH syntax error: ‘\flag{err0r_b4sed_sqli_+_hpf}’

拿到flag。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇