查看Mysql字符集
show variables like '%char%';
修改字符集
set names 'gbk';相当于下面的三句命令
mysql> set character_set_client = gbk;
mysql> set character_set_results = gbk;
mysql> set character_set_connection = gbk;
实例
以sqli-labs的第32关为例
(1)输入’,被\转义
(2)输入%df
(3)分析执行过程
① id=%df%27,浏览器执行时会自动url解码一次,断点你就会发现
注:其实那个乱码的是希腊字母β
② 此时KaTeX parse error: Can't use function '\'' in math mode at position 39: …rs WHERE id='1�\̲'̲' LIMIT 0,1"`,接…sql转为16进制
(2)将16进制数转为url编码
(3)这里以GBK(内部操作字符集)进行url解码,执行sql语句
(4)以character_set_results编码输出结果
关键参数简单示意图:
%df%27 浏览器url自动解码===> β\' 转为16进制===> 0xdf0x5c0x27 转换为url编码===> %df%5c%27 进行url解码(因为是GBK编码,%df和%5c结合为汉字)===> 運'