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 '


然后将两段合起来就行了
FROM:无垠の安全
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论