WEB安全之SQL注入(8)——堆叠注入(Stacked injection)

原创
2020/04/13 20:00
阅读数 3.6K

大家好,我是阿里斯,一名IT行业小白。今天分享的内容是堆叠注入,内容简单易懂,这里环境是php+mysql。


数据库实现堆查询

其实所谓的堆查询就是使用分号隔开同时执行多条sql语句

第一条语句查询表,第二条查询当前数据库名

select * from user;select database();

第一条查询表,第二条删除表

 select * from users;delete from users;


堆叠注入原理解析

大家都知道SQL语句默认的结束符是分号(;)。我们可以使用分号同时执行多个sql语句。那我们做一个推理,假如一个网站存在sql注入漏洞,我们使用分号在注入点拼接多个sql语句会不会一起带入数据库执行呢?正是这个推理形成了堆叠注入这个概念!

注入点示例

?id=1;delete from users;


堆注入局限性(php-mysql)

大家都知道,网站后台的查询语句只会返回一个结果,所以我们无法确定我们的堆叠语句是否执行成功。另外还需要注意一个问题,如果我们的网站后台只支持一条sql语句执行,那堆注入不存在了。所以想要支持堆注入还需要网站后台支持执行多条sql语句才可以。如php需要将mysqli_query()函数换为mysqli_multi_query()才可以执行多条sql语句查询。


写代码测试

测试语句

通过测试,可以发现不但查询到了数据而且在数据库也插入了test这条数据

http://localhost/hhs/more_sqlInjrection.php?id=2';insert into user(username,password) values('test','test');--+


本文注意以php+mysql展开,下方附有参考文章,里面测试了各种数据库,有兴趣的朋友可以去看看。如果想找靶机测试可以从sqlilabs的第38关开始测试,进行练习。

参考文章:

https://www.cnblogs.com/0nth3way/articles/7128189.html

欢迎各位老铁帮忙转发、分享、收藏


本文分享自微信公众号 - 小白学IT(xiaobaixueIT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部