堆叠查询注入


什么是堆叠注入

堆叠注入。从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加 ; 由于搜索引擎的不同,Orcle不支持堆叠查询。
平常我们注入时都是通过对原来sql语句传输数据的地方进行相关修改,注入情况会因为该语句本身的情况而受到相关限制,例如一个select语句,那么我们注入时也只能执行select操作,无法进行增、删、改,其他语句也同理。

mysqli_multi_query()函数

mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_query()函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁。

注入分析

使用sqli-labs进行注入测试

?id=1'; insert into users(id,username,password)values('111','test','test') ;

insert写入数据
没有报错,我们输入?id=111进行测试
?id=111
注入成功

总结

由于堆叠注入危害极大,平时并不常见,我们仅作学习了解mysqli_multi_query()函数的。
当代码中允许批量执行SQL时就有可能存在堆叠查询注入可能。

最后修改:2021 年 08 月 05 日 11 : 45 PM
如果觉得我的文章对你有用,请随意赞赏