83.网络安全渗透测试—[SQL注入篇22]—[高级注入技巧-位移注入]
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
一、高级注入技巧-位移注入
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)上例的两个表结构: