宽字节注入详解

一、背景:

在以前的网站的,有部分网站的编码方式为gbk,而数据库的编码为utf-8。其中最重要的特定是gbk为两个字节表示一个汉字 ,而utf-为三个字节表示一个汉字 ,这种差异性就能创造注入的可能。 同时Web 应用为了防御 SQL 注入,会对用户输入中的特殊字符(如 ')进行**转义,**如'则转义成 " \' ",它们在十六进制下为%5c%27,而这在gbk编码环境下,如果我们再在前面加一个字节,如%df这就会与%5c又重新构成一个汉字,这就把%27也就是那个 " ' "逃逸出来了吗?

不过当今环境很难实现这种情况了,毕竟只要全部统一为同一种编码方式就能防御了,但也不妨我们研究研究。

二、靶场测试

这里我门就sqli靶场的Less32关来举例。

我们只加了一个 ' 观察一下,发现经过了转义,那么我们在在前面加一个字节试一试,毕竟在gbk环境下两个字节就能使其构成汉字。

结果是出现了报错,如何才能出现报错?说明语法出了问题,这也就意味着我们成功实现把 ' 逃逸出来无法正常实现闭合。%df%5c 他们在gbk编码中表示繁体的"运",那么这个%27的单引号就成功逃逸。

在原程序中就类似于图中情况。

当成功实现逃逸之后的注入步骤就相当的基础了,至此就实现了宽字节注入。

相关推荐
数据库小学妹11 小时前
MySQL慢SQL优化实战指南:EXPLAIN分析+索引优化+8个真实案例
sql·mysql·mysql优化·数据库性能·索引优化
MatrixOrigin12 小时前
MatrixOne Git4Data 技术详解(七)·数据运维实践篇:Write-Audit-Publish——给 ETL 流水线装一道发布门禁
sql·数据平台·ai-native·矩阵起源·git4data·matrixone
阿里云大数据AI技术1 天前
Hologres AI Function 文本分类实战:从提示词设计到 KV-Cache 调优,全程 SQL 搞定
人工智能·sql
2601_962683891 天前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
dexi.Chi 攻城狮1 天前
SQL层次查询语法
经验分享·笔记·sql
华山令狐虫1 天前
DBAPI AI 写 SQL:支持动态 SQL 与参数占位符,自然语言一键生成
数据库·人工智能·sql·dbapi
一个天蝎座 白勺 程序猿1 天前
自动SQL优化实战|吃透调优接口+报告配置+统计+索引全流程落地
数据库·sql·sql优化
隐形的萝莉2 天前
再回到技术面,研究 T-SQL 的 UNION、EXISTS、EXCEPT、INTERSECT 运算符。
数据库·sql
吴声子夜歌2 天前
SQL进阶——窗口函数进行行间比较
数据库·sql