宽字节注入原理及绕过方式
宽字节注入原理及绕过方式
前言
众所周知,SQL注入作为危害最大的攻击方式,开发人员在开发时一定会想办法去防范,在这里我们介绍一种新的方式——宽字节注入法去绕过设置的障碍
原理
一般来说,如果开发人员在开发的时候,对传入的参数进行了特殊的函数处理,比如使用了trim()函数,htmlspecialchars()函数,addlashes函数,是可以过滤我们非法提交的参数,从而导致SQL注入无法成功。
作为攻击者,要完成的是对参数的拼接,从而导致恶意的SQL语句写入。作为开发者要完成的是SQL输出参数的一个过滤比如对恶意的字符进行转移
常用过滤函数
trim()函数
移除字符串两侧的空白字符或其他预定义字符
htmlspecialchars()函数
把预定义的字符"<"和">"转换为HTML实体,预防XSS
addslashes()函数
返回在预定义字符之前添加反斜杠的字符串
# 预定义字符
1.单引号(')
2.双引号(")
3.反斜杠(\)
4.NULL
上述函数常在CMS里使用进行过滤
宽字节注入条件
1.数据库为GBK编码
2.使用了转义函数,将、POGETST、cookie传递的参数进行过滤,将单引号、双引号、null等敏感字符用转义符 \ 进行转义
绕过方式
root %df' or 1=1 #
# 原理:在GBK编码中,反斜杠的编码是%5c,在输入%df后,使得添加反斜杠后形成%df%5c,而%df%5c是繁体字“連”,单引号成功逃逸,爆出Mysql数据库的错误
以pikachu为例
我们在正常updatexml()注入后发现不成功
接下来尝试宽字节注入,而直接在网页中提交依然不行,所以判断为POST请求,使用抓包工具进行注入
注入成功
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/15136893.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App