zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

83.网络安全渗透测试—[SQL注入篇22]—[高级注入技巧-位移注入]

注入网络安全测试SQL 技巧 高级 渗透 22
2023-09-27 14:28:02 时间

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

一、高级注入技巧-位移注入

1、简介

(1)场景:这种注入方式合适在找到表找不到字段的情况下使用。

(2)实质:这种注入方式,需要联合两个表,所以这种注入实际上就是联合查询注入的一种。

2、原理

(1)在SQL中查询 select * from admin; 其中的星号代表所有字段,而且 select * from admin; 的结果等于下面几种结果

select admin.* from admin
select admin.id,admin.username,admin.password from admin
select id,username,password from admin

(2)在使用位移注入这种注入方法之前,需要确定当前表的字段数,通俗的说应该是后台的查询语句中的表的字段个数。例如:此时后台的表是article,且它的的字段数为3个,分别是id、title、content,如下图所示:
在这里插入图片描述

(3)例如:表admin的字段数也是3个,此时使用联合语句把admin表联合进artical表来查询。如果使用的是select * from article where id=1 union select 1,2,3 from admin这条语句。此时因为两表列数一样,会进行结果合并。注意,虽然admin表里面并没有1,2,3为名的字段,同时由于select语句的特性,同样也会打印显示出1,2,3。

在这里插入图片描述
(4)假如:表admin的字段数也是3个,此时使用联合语句把admin表联合进artical表来查询。如果使用的是select * from article where id=1 union select admin.* from admin这条语句。此时因为两表列数一样,会进行结果合并。
在这里插入图片描述
(5)当然,此时也可以把语句改成select * from article where id=-1 union select admin.* from admin;这样就会只显示表admin的数据
在这里插入图片描述

3、总结

(1)使用这种方法的限制:当前表也就是被联合的表的字段个数要大于或等于联合的表

(2)上例的两个表结构:

在这里插入图片描述
在这里插入图片描述