[SUCTF 2018]MultiSQL-MySQL预处理

MySQL传统处理:

客户端准备sql语句

发送sql语句到MySQL服务器

MySQL服务器执行sql语句

服务器执行结果返回客户端

预处理基本策略:

将sql语句强制一分为二:
第一部分为前面相同命令和结构部分
第二部分为后面可变数据部分
首先将前面的sql语句发送给MySQL服务器,让其先执行溢出预处理(并没有真正的执行)第一次发送sql语句的时候将其中可变的数据部分都用一个数据占位符来表示,比如问号?

不带参数的预处理

准备预处理语句

prepare 语句名称 from “预处理的sql语句”;

prepare sql_1 from "select * from pdo";

执行预处理语句

execute sql_1;

删除预处理语句

drop prepare sql_1;

带参数的预处理

准备预处理语句

prepare sql_2 from "select * from pdo where id = ?";

定义参数变量

set @id=2;

传参,执行预处理

execute sql

你可能感兴趣的:(刷题,mysql,服务器,数据库)