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/
赞赏微信赞赏支付宝赞赏
3条评论