mysql 堆叠查询_WEB安全之SQL注入(8)——堆叠注入(Stacked injection)

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

数据库实现堆查询

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

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

select * from user;select database();

mysql 堆叠查询_WEB安全之SQL注入(8)——堆叠注入(Stacked injection)_第1张图片

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

select * from users;delete from users;

mysql 堆叠查询_WEB安全之SQL注入(8)——堆叠注入(Stacked injection)_第2张图片

堆叠注入原理解析

大家都知道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');--+

mysql 堆叠查询_WEB安全之SQL注入(8)——堆叠注入(Stacked injection)_第3张图片

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

参考文章:

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

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

mysql 堆叠查询_WEB安全之SQL注入(8)——堆叠注入(Stacked injection)_第4张图片

你可能感兴趣的:(mysql,堆叠查询)