[强网杯 2019]随便注
根据题名可以知道为sql注入。题目直接给了1,我们发送一下。
看到了给的回显。
再次进行测试,在1的后面加上单引号,发现报错闭合不正确
测试字段
在2时正常,3报错,所以有2个字段
进行联合查询数据库,发现返回了个错误
1' union select null, user()
经过分析大概是过滤了select,发现绕过不了,那么我们使用堆叠注入(将一堆sql语句在一起执行使用分号结束上一个语句在叠加其他语句一起执行,一般select等被禁用时使用),查一下库正常回显。
查一下表,发现表可以查询到
查一下words
再次查表,发现flag存在1919810931114514中
因为进行了select过滤,直接查询查询不到,那我们就将1919810931114514表改成words表,然后使用alter table 将1919810931114514表中的flag列名修改为words表中的id列名,通过原本查询将flag查询出来
?inject=1';rename table words to word;rename table `1919810931114514` to words;alter table words change flag id varchar(100)%23
通过内联查询1‘ or '1'='1,得到flag