16

2019-10-06

 4 years ago
source link: https://www.tuicool.com/articles/yQFjQ3q
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

题目

rAFFzaz.jpg!web

首先尝试闭合引号,并注释后面的内容。

26v6Zfm.jpg!web

发现没有报错,那就判断一下有多少列。

RvyYRnM.jpg!webiYv67bu.jpg!web 由此可以判断出有两列,接着判断回显位。

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

这时就可以尝试一下堆叠注入。

VRZFnq7.jpg!web

发现这里爆出了所有数据库,再来看看数据表。

AFB7V3e.jpg!web

发现有两个数据表,通过查看表结构看一下哪个表里面有flag字段。

nAf2qeZ.jpg!webmQRR3yU.jpg!web

发现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;

YvaIjeU.jpg!web 成功拿到了flag。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK