【新手入门】SQL注入之加密注入、堆叠注入

加密注入

前端提交的有些数据是加密之后,到了后台再解密,然后再进行数据库查询等相关操作的,既然如此,我们也应该将注入语句按照相同的加密方式,加密之后再进行注入。

如搜狐视频

解码工具解码

可解出其原始URL格式,其通过n620048098等数字链接的视频

堆叠注入

概念

堆叠注入(Stacked iniections)从名词的含义可以看到是一堆select语句(多条)一起执行。

其在真实的运用中也是这样的,我们知道在mysql 中,主要是命令行中,每一条语句结尾加;表示语句结束。试想一下我们在;结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。

原理

union iniection(联合注入)也是将两条语句合并在一起,其与堆叠注入之间有什么区别么?区别就在干union 或者union a执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

堆叠查询只能返回第一条查询信息,不返回后面的信息。因此,堆叠注入第二个语句产生错误或者结果只能被忽略,我们在前端界面是无法看到返回结果的。因此,在读取数据时,我们建议使用union(联合)注入。同时在使用堆叠注入之前,我们也是需要知道一些数据库相关信息的,例如表名,列名等信息。

堆叠注入语句攻击

例如以下这个例子,用户输入:1;   DELETE FROM products服务器端生成的sal语包为: Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。

堆叠查询可以执行多条 SQL语句,语句之间以分号(;)隔开,而堆叠查询注入攻击就是利用此特点,在第二条语句中构造要执行攻击的语句。

在pikachu靶场的数字型注入抓个包

若堆叠注入能生效,则其造成的影响非常大。

分号后的SQL语句可写任何语句,如找出、创建数据库的SLQ语句甚至删除数据库的语句。若被人发现有堆叠注入的漏洞,那个人可能会通过这个漏洞删除你数据库的所有数据!!!

报错,说明不支持堆叠注入。

限制

在 mysql,php的函数中 mysqli multi query 和 mysgl multi_query这两个函数(函数也叫做API)执行一个或多个针对数据库的查询。多个查询用分号进行分隔。堆叠注入的危害是很大,可以任意使用增删改查的语句,例如删除数据库、修改数据库、添加数据库用户。但实际情况中,如PHP为了防止sql注入,往往调用数据库的函数是mysgli. query(0函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将对数据安全造成重大威胁。

堆叠注入的局限性在于并不是每一个环境下都可以执行,可能受到API或者数据库引擎不支持的限制,当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些程序。

mysql中有些API是支持的,sql server都支持,oracle不支持。

SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统,现在是全世界主流数据库之一;oracle是一款关系数据库管理系统。它在数据库领域一直处于领先地位,被广泛应用于各种规模的计算环境中。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值