SQL注入-堆叠注入

堆叠注入定义
Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做 stacked injection。

堆叠注入原理:
在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为: Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。

0x01 堆叠注入危害
堆叠注入是一种危害很高的注入漏洞,黑客也可以通过构造’;drop database; --l的输入值来执行数据库的删除,或是插入管理员账户,修改订单内容,删除记录等高危操作。

0x01 堆叠注入局限
堆叠注入攻击主要存在SQL SEVER、和部分类型的MYSQL数据库中,ORCALE数据库因为不支持多语句执行,所以无法进行堆叠注入。MYSQL数据库在搭配PHP的mysqli_query()函数时,由于没有对输入的值进行预处理,所以会存在堆叠注入的问题。当使用mysqli_multi_query()函数,会对传入数据进行一个预处理操作,所以不会存在堆叠注入的问题。

猜你喜欢

转载自blog.csdn.net/jokerhappy/article/details/107592369
今日推荐