Advertisement

SQL Injections 8 (Stacked Injections) — 强网杯 2019随便注

阅读量:

SQL Injection8(堆叠注入)——强网杯2019随便注

前言

参与强网杯线上赛的经历,让我亲身体验了ctf从初学者到被高手击败的全过程。

结合此次比赛中的题目内容,对相关知识点进行一次系统性的学习与总结。

其中“随便注”是一道sql注入类型的题目,由于其过滤机制极为严密,因此难度较大。

在解决这道题时需要用到堆叠注入的相关知识。虽然之前对堆叠注入有所了解,并认为其并不复杂,但实际操作过程中仍然感到有些困惑。

关于堆叠注入的原理:

在SQL语言中,分号(;)通常用于标识一条sql语句的结束。设想一下,在一个sql语句结束后继续构造另一条语句,是否能够同时执行?正是基于这样的思路,产生了堆叠注入技术。而联合注入(union injection)同样是将两条语句合并在一起执行。这两者之间存在什么差异呢?主要区别在于union或union all只能执行特定类型的查询语句,而堆叠注入则可以执行任意类型的语句。例如以下示例:用户输入:1; DELETE FROM products服务器端生成的sql语句为:(由于未对输入参数进行有效过滤)Select * from products where productid=1;DELETE FROM products当该查询被执行时,第一条会显示查询结果信息,而第二条则会删除整个表的数据。

全部评论 (0)

还没有任何评论哟~