sql注入知识---堆叠注入

堆叠注入是一种允许执行多条SQL语句的技术,绕过单一语句限制,通过在原始查询后添加分号和新语句实现。这种技术需要特定条件,如数据库支持和使用特定API(如mysqli_multi_query)。文章详细介绍了堆叠注入的原理,使用条件,查看数据库、表格、列和数据的方法,以及如何通过16进制类型绕过限制。尽管使用条件苛刻,但堆叠注入对网络安全构成严重威胁,可用于创建数据库账号或尝试权限提升。
摘要由CSDN通过智能技术生成

一、堆叠注入产生原因

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

二、使用条件

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

  1. 要看数据库是否支撑此类语句
  2. 看源码是否应用相应的函数(黑盒猜)
    例如:
    在这里插入图片描述

三、堆叠注入语句

根据数据库类型决定是否支持多条语句执行(核心)
在这里插入图片描述

1、查看数据库

';show databases;

2、查看表格

';show tables;

3、查看列

';show columns from `1919810931114514`;

4、查看数据

';select flag from `1919810931114514`;

四、16进制类型(绕过)

';SeT @a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;

五、堆叠应用:

堆叠注入(条件苛刻)要拿权限的话可以用堆叠注入创建一个数据库账号然后登录,如果权限限制比较严格的话试试提权或其他方式进行一个组合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kui954

感谢各位的支持o(* ̄3 ̄)o

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值