关于报错注入获取数据不全问题解决

发布于 2021-02-03  585 次阅读


0x00 介绍

在使用 updatexml extractvalue exp floor进行报错(双查询)注入时会出现如数据的数量过多导致无法一次性显示所有,或者在查询md5加密的密码时由于密码长度过长而只能获取一半,本次教程就来解决这个问题

0x01 解决办法

以pikachu靶场为例

在使用concat时在数据两边都加上 0x7e或者别的字符编码,保证在获取的数据结果两边都出现这个符号就能证明获取的数据是完整的

如下图,ox7e代表 ~ ,可以看到在pikachu两边都出现了它,说明数据库的名字是pikachu


a.查询多个数据获取不全

但是有时候例如下面情况是显示前面的~,后面的没显示,就说明我们的数据获取不全

这时候我们可以控制显示的数量,直到后面的也显示为止

第一种解决办法

不用group_concat换成limit来单条显示,一条一条查(group_concat和limit不能同时使用)

。。。。。


第二种方法

是创建一个临时表t,作为最新创建的几条数据的临时表,再到临时表t中取数据:

b.同一条数据获取不全

我们都知道存储在数据库中的密码一般都是md5加密的,如果太长则不能全部显示

我们则可以用截取函数来一半一半获取

# 先获取前16位
' or updatexml(1,concat(0x7e,(select mid(password,1,16) from users limit 0,1),0x7e),2) or '
# 再获取后面16位
' or updatexml(1,concat(0x7e,(select mid(password,17,16) from users limit 0,1),0x7e),2) or '

然后将两段合起来就行了


一个热爱技术的白帽子