什么是堆叠注入?

顾名思义,堆叠注入就是将一堆sql语句叠加在一起执行,使用分号结束上一个语句再叠加其他语句一起执行。

题目

堆叠注入 Safe 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

首先尝试闭合引号,并注释后面的内容。
堆叠注入 Safe 第2张
发现没有报错,那就判断一下有多少列。

堆叠注入 Safe 第3张
堆叠注入 Safe 第4张
由此可以判断出有两列,接着判断回显位。

堆叠注入 Safe 第5张

发现回显了过滤规则,select是被过滤的,还有一些注入常用语句也被过滤了。

这时就可以尝试一下堆叠注入。
堆叠注入 Safe 第6张
发现这里爆出了所有数据库,再来看看数据表。
堆叠注入 Safe 第7张
发现有两个数据表,通过查看表结构看一下哪个表里面有flag字段。
堆叠注入 Safe 第8张
堆叠注入 Safe 第9张

发现flag字段在1919810931114514表中,接着想办法去读取这个表中的flag字段的值(因为一些常用语句都被过滤了,不能直接查询)。
这里实在不知道怎么办了,于是百度发现大佬的wp用预处理语句绕过了过滤。

预处理语句使用方式:

SET @sql = variable;  //设置变量
PREPARE yuchuli from '[my sql sequece]';   //预定义SQL语句
EXECUTE yuchuli;  //执行预定义SQL语句sqla

这里是将我们要处理的语句先与定义为yuchuli,再进行执行,绕过关键字的过滤,于是就有了如下的语句。

PREPARE yuchuli from 'select * from `1919810931114514`';
EXECUTE yuchuli;

但是这里的select是被过滤的,于是想到可以对他进行编码绕过.

SET @sql = concat(char(115,101,108,101,99,116), " * from `1919810931114514`");
PREPARE yuchuli from @sql;
EXECUTE yuchuli;

堆叠注入 Safe 第10张
成功拿到了flag。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄