SQL注入之堆叠注入学习

SQL注入之堆叠注入学习

而萌新的我只会嘤嘤嘤。于是我们的大哥就带着我们去日站了。是一个**app,名字就不说了。大家一起找到了网站的后台,由于部署了CDN,我们一直没能找到真实ip,大家都没什么思路。但大哥就是大哥,两天就把后台给成功拿下来了。大哥把整个思路过程都写到了博客里,因为法律的问题吧,就一直没公开,发了份md文档在群里给大家学习。其中是通过堆叠注入来update管理员的密文getshell的。

由于自己太菜了,之前一直都没有了解过堆叠注入,所以赶紧恶补一下,不能拖大家的平均水平。

注入原理

平常我们注入时都是通过对原来sql语句传输数据的地方进行相关修改,注入情况会因为该语句本身的情况而受到相关限制,例如一个select语句,那么我们注入时也只能执行select操作,无法进行增、删、改,其他语句也同理,所以可以说我们能够注入的十分有限。但堆叠注入则完全打破了这种限制,其名字顾名思义,就是可以堆一堆sql注入进行注入,这个时候我们就不受前面语句的限制可以为所欲为了。其原理也很简单,就是将原来的语句构造完后加上分号,代表该语句结束,后面在输入的就是一个全新的sql语句了,这个时候我们使用增删查改毫无限制。

使用条件

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

还是用sqli-labs来学习这个注入,是第38题字符型的。

还是直接加单引号报错。

直接观察源码发现

和前面题的sql查询函数mysql_query不同,这里用的mysqli_multi_query。

那么它的作用是什么呢?

这就好理解了,就是这个函数可以同时执行多条sql语句。

我们尝试注入语句:'; insert into users(id,username,password) value (666,'zgao','zgao')--+

没有报错说明都执行成功了。此时查看数据库。

成功插入了数据。

堆叠注入名字听起来挺高大上的,但其实没有我想象那么难,甚至更简单了,因为他不像其他注入那样有很多的约束条件。

而且大表哥的思路也挺好的,直接生成一个新的密文,然后update管理员的密文,getshell之后再改回来。

最后留一张大表哥日到后台的截图,tql,献上我的膝盖。

悄悄地分享一下:“净网2019”打击网络色情,实录渗透某成人“抖音”

以及大表哥的博客http://quyunjie.cn/

zgao

如果有什么技术上的问题,可以加我的qq 1761321396 一起交流。