Accsess注入-偏移注入
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是Microsoft Office 的系统程序之一,Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软OFFICE的一个成员, MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。软件开发人员和数据架构师可以使用Microsoft Access开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数。
在sql注入的时候会遇到一些无法查询列名的问题,比如系统自带的数据库的而权限不够而无法访问系统自带库。
当你猜到表名而无法字段名的时候,我们可以使用偏移注入,来查询那张表里的数据。
而sqlmap的方法就是爆字段名,如果字段名比较奇葩,那字典估计也就没办法了,只能使用偏移注入。
实战靶场
首先我们来判断是否存在注入点,输入and 1=1 回显被拦截。
这里我们使用cookie注入进行绕过。在控制台下输入一下代码
document.cookie="id="+escape("order by 50");
发现语句被带入数据库查询报错。
接下来我们通过二分法猜字段。当猜测的字段等于真实字段数时,回显正确,否则回显如上图所示。
很快猜到字段为26个时回显正确。
接下来使用hackbar工具进行注入,注意:cookie注入在这里的要把空格转义为 + 号。
发现存在4个回显点。admin表是猜的,news表也可以。
此外,我们发现了图片,我们审查元素发现,可能图片也是个输出点。
25,我们把第25个字段给改一下值。改为XINN666
所以说明这也是输出点。
接下来讲一个小技巧, 表名.* ,这里是正则匹配的知识,后面我会出一篇正则匹配的文章,我们这里使用admin.*的移位来判断这个表有几个字段,
这里我总结出:当查询的字段数+admin表的字段数=order by的字段数,这里的order by字段数就是26个,然后我们通过慢慢移位判断admin表有几个字段,当我移位到第11位时回显正确,说明admin表有16个字段。
然后我们思考一个问题,把 admin.* 移到回显点7会怎么样,在7这个回显点应该会显出admin表的第一个字段的第一个值,接下里请欣赏我的一波移位操作。
把admin.*依次放在第7,6,5位,那么就应该依次返回admin表的第1,2,3个字段的值,回显给出1,admin,b9a2a2b5dffb918c,看来字段名应该依次是id,username,password,然后这个password非常像MD5拿去解码应该就是后台管理员登陆密码。然后讲一下偏移注入其实越多回显点越好,方便移位测试,我们这里包括图片一共四个回显点,其实可以好好利用以下的,这里就不讲方法了,偏移注入就到这里了。