[强网杯]随便注和[极客大挑战 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个。

然后再进行联合查询

先查库名

 

 

然后再查表名

 

 

然后再查列名

 

 

然后再查内容

 

 

 

总结:

1、找出屏蔽词是关键。
posted @ 2021-12-08 17:13  FPointmaple  阅读(52)  评论(0)    收藏  举报