跳转至

每日一题 —— [SWPUCTF 2021 新生赛]error

题目地址:https://www.nssctf.cn/problem/428

首先,题目要求我们传入一个 id 参数。根据测试,这是一个 sql 注入,我们传入 1 或者 -1' or 1=1 --+ 都会得到“没有提示……”的提示。另外,传入 -1 或者 1' and 2=1 --+ 就没有这个提示。说明可能是盲注。

但是根据这道题会出现语法错误的提示,并且题目标题为“error”,说明可以使用报错注入,这样就不用盲注了。

报错注入的原理是使用 updatexml() 函数或者 extractvalue() 函数,将需要查询的内容拼接上 ~ 符号,也就是 0x7e ,这样就不符合 xpath 语法,从而报错泄漏信息。

updatexml() 函数为例,我们传入这样的 payload:

1' and extractvalue(1,concat(0x7e, (select database()))) --+

基本上,这 updatexml 函数的用法就是 updatexml(1, concat(0x7e, 查询语句), 1)

同理,extractvalue() 函数也是 extractvalue(1, concat(0x7e, 查询语句)),就少了第三个参数。

那么最终我们的 payload 如下:

1' or updatexml(1,concat(0x7e,substr((select flag from test_tb),20,30)),1)  --+

注意调整 substr() 的后两个参数,来保证所有的信息都能被查询出来。因为我们的报错注入只能显示 32 位信息。


文章热度:0次阅读