SQL注入漏洞之高阶手法 宽字节注入以及编码解释 以及堆叠注入原理说明

news2025/1/30 8:20:59

目录

 宽字节注入

编码区分

原理

函数

转译符号解释

注意

绕过方式详解

堆叠【Stack】注入攻击

注入语句


 宽字节注入

  • 在说宽字节注入之前 我们需要知道编码相关的知识点,这个有助于搞定什么是宽字节注入
  • 分清楚是ascii码是什么
  • 宽字节注入代码里面加入了addslashes()转移 拼接

编码区分

  • Ascii英文单词符号对应成数字没有涵盖中文 1个单词一个字节 8位二进制计算机保存二进制 数据映射到计算机种类。

  • Unicode 万国码统计编码表 统一4个字节 Unicode可变长度的gbk2312

    • 升级gbk 一个中文2个字节 【十进制 十六进制 八进制】都兼容的编码 可便长度编码

  • utf-8 英文一个字节 一个中文3个字节 其他国家可变字节 兼容性就更加号

    • 存任何语言节约空间,utf就不会出现什么问题。

  • url编码 百分号编码 % 百分号跟的 0x16进制数字 === ascii码

原理

  • 有些网站在注入的时候 做了防护措施

    • 措施就是反斜杠转义 绕不过编码 宽字节转移

      • %2F 反斜杠

函数

  • addslashes和mysql_real_escape_string 函数

转译符号解释

他们转义的字符是单引号(')、双引号(")、反斜线()与NUL(NULL 字符)

  •  转义的方式就是在这些符号前面自动加上 \ ,

  • 让这些符号的意义失效,或者可以理解为被注释掉了

  • 引号转义 防范的 \'

  • 不能返回 数字型的不需要加斜杠的

// "select id,email from member where username='xx\' or  1=1 #'"

    绕过这种方式就是宽字节注入【GBK】反斜杠16进制编码 反斜杠0x5c

    %5C GBK 反斜杠
    0x5c ascii对应16进制
    %23 # 0X23
    • \编码为%5C,我们一般在地址后添加%df。

    • URL编码 %27 单引号

      • 16进制 ascii对应16进制 0x27

    • %5C GBK 反斜杠加一个df 吃一个反斜杠 吃成一个汉字

      • 0x5c ascii对应16进制

    注意

    项目必须是GBK编码

    "select id,email from member where username='xx0xdf0x5c' or  1=1 #'"
    注入语句: xx0xdf0x5c' or  1=1 # 宽字节注入必须是GBK编码
    • 但是URL编码就不行 使用gbk编码 使用ascii 16进制编码

    绕过方式详解

    • 斜杠不能转移 我们将斜杠转化成一个汉字,那么斜杠就没意义了 只要开启了反斜杠转移的情况下 使用了gbk连接数据库的情况下

    • 使用%df吃掉%5c 合成一个汉字让斜杠失去意义,那么单引号闭合就可以使用了

    ss%df%5C' or 1=1 #
    xx0xdf0x5C' or  1=1 #

    • 添加后\变成了汉字,这样就绕过了。之后就和前面的一样了
    • 当然,还有双引号等,除了GBK还有GB2312等编码,有兴趣的可以整理一下所有的。

    堆叠【Stack】注入攻击

    • 一堆sql语句同时执行 分号分隔 如果堆叠注入能够生效 堆叠注入得效果是非常大的,

      • 后面的 增删改查的语句都可以使用

      • 删除数据库 导出数据库数据 等

    • 堆叠注入可执行多条语句 多语句之间以分号隔开。

    • 堆叠注入成功必须需要需要一个条件才能成功

      • 在 mysql 中php的函数里面 mysqli_multi_query 和 mysql_multi_query这两个函数(函数也叫做API)

      • 执行一个或多个针对数据库的查询

      • 多个查询用分号进行分隔

      • 堆叠注入的危害是很大

        • 可以任意使用增删改查的语句,例如删除数据库 修改数据库,添加数据库用户。但实际情况中

        • 如PHP为了防止sql注入,往往调用数据库的函数是mysqli_ query()函数,其只能执行一条语句

      • 分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将对数据安全造成重大威胁。

    注入语句

     ?id=1;create table test like users --+  

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2286344.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    ADC 精度 第一部分:精度与分辨率是否不同?

    在与使用模数转换器(ADC)的系统设计师交谈时,我经常听到的一个最常见问题是: “你们的16位ADC也是16位准确的吗?” 这个问题的答案在于对分辨率和精度这两个概念的基本理解存在差异。尽管这是两个完全不同的概念&…

    生成模型:扩散模型(DDPM, DDIM, 条件生成)

    扩散模型的理论较为复杂,论文公式与开源代码都难以理解。现有的教程大多侧重推导公式。为此,本文通过精简代码(约300行),更多以代码运行角度讲解扩散模型。 本代码包括扩散模型的主流技术复现: 1.DDPM (De…

    【hot100】刷题记录(7)-除自身数组以外的乘积

    题目描述: 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#x…

    鸢尾花书01---基本介绍和Jupyterlab的上手

    文章目录 1.致谢和推荐2.py和.ipynb区别3.Jupyterlab的上手3.1入口3.2页面展示3.3相关键介绍3.4代码的运行3.5重命名3.6latex和markdown说明 1.致谢和推荐 这个系列是关于一套书籍,结合了python和数学,机器学习等等相关的理论,总结的7本书籍…

    可扩展架构:如何打造一个善变的柔性系统?

    系统的构成:模块 + 关系 我们天天和系统打交道,但你有没想过系统到底是什么?在我看来,系统内部是有明确结构 的,它可以简化表达为: 系统 = 模块 + 关系 在这里,模块是系统的基本组成部分,它泛指子系统、应用、服务或功能模块。关系指模块 之间的依赖关系,简单…

    C++并发:C++内存模型和原子操作

    C11引入了新的线程感知内存模型。内存模型精确定义了基础构建单元应当如何被运转。 1 内存模型基础 内存模型牵涉两个方面:基本结构和并发。 基本结构关系到整个程序在内存中的布局。 1.1 对象和内存区域 C的数据包括: 内建基本类型:int&…

    宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大

    磁盘空间占用过多,排查后发现网站/www/wwwroot只占用7G,/www/server占用却高达8G,再深入排查发现/www/server/data目录下的mysql-bin.000001和mysql-bin.000002两个日志文件占去了1.5G空间。 百度后学到以下知识,做个记录。 mysql…

    2859.计算K置位下标对应元素的和

    示例 1:输入:nums [5,10,1,5,2], k 1 输出:13 解释:下标的二进制表示是: 0 0002 1 0012 2 0102 3 0112 4 1002 下标 1、2 和 4 在其二进制表示中都存在 k 1 个置位。 因此,答案为 nums[1] nums[…

    8. 网络编程

    网络的基本概念 TCP/IP协议概述 OSI和TCP/IP模型 socket(套接字) 创建socket 字节序 字节序转换函数 通用地址结构 因特网地址结构 IPV4地址族和字符地址间的转换(点分十进制->网络字节序) 填写IPV4地址族结构案例 掌握TCP协议网络基础编程 相关函数 …

    关于opencv环境搭建问题:由于找不到opencv_worldXXX.dll,无法执行代码,重新安装程序可能会解决此问题

    方法一:利用复制黏贴方法 打开opencv文件夹目录找到\opencv\build\x64\vc15\bin 复制该目录下所有文件,找到C:\Windows\System32文件夹(注意一定是C盘)黏贴至该文件夹重新打开VS。 方法二:直接配置环境 打开opencv文…

    Git Bash 配置 zsh

    博客食用更佳 博客链接 安装 zsh 安装 Zsh 安装 Oh-my-zsh github仓库 sh -c "$(curl -fsSL https://install.ohmyz.sh/)"让 zsh 成为 git bash 默认终端 vi ~/.bashrc写入: if [ -t 1 ]; thenexec zsh fisource ~/.bashrc再重启即可。 更换主题 …

    DeepSeek-R1 本地部署模型流程

    DeepSeek-R1 本地部署模型流程 ***************************************************** 环境准备 操作系统:Windows11 内存:32GB RAM 存储:预留 300GB 可用空间 显存: 16G 网络: 100M带宽 ********************************************…

    C++ unordered_map和unordered_set的使用,哈希表的实现

    文章目录 unordered_map,unorder_set和map ,set的差异哈希表的实现概念直接定址法哈希冲突哈希冲突举个例子 负载因子将关键字转为整数哈希函数除法散列法/除留余数法 哈希冲突的解决方法开放定址法线性探测二次探测 开放定址法代码实现 哈希表的代码 un…

    C#通过3E帧SLMP/MC协议读写三菱FX5U/Q系列PLC数据案例

    C#通过3E帧SLMP/MC协议读写三菱FX5U/Q系列PLC数据案例,仅做数据读写报文测试。附带自己整理的SLMP/MC通讯协议表。 SLMP以太网读写PLC数据20191206/.vs/WindowsFormsApp7/v15/.suo , 73216 SLMP以太网读写PLC数据20191206/SLMP与MC协议3E帧通讯协议表.xlsx , 10382…

    Unity|小游戏复刻|见缝插针1(C#)

    准备 创建Scenes场景,Scripts脚本,Prefabs预制体文件夹 修改背景颜色 选中Main Camera 找到背景 选择颜色,一种白中透黄的颜色 创建小球 将文件夹里的Circle拖入层级里 选中Circle,位置为左右居中,偏上&…

    数据结构的队列

    一.队列 1.队列(Queue)的概念就是先进先出。 2.队列的用法,红色框和绿色框为两组,offer为插入元素,poll为删除元素,peek为查看元素红色的也是一样的。 3.LinkedList实现了Deque的接口,Deque又…

    HTML-新浪新闻-实现标题-排版

    标题排版 图片标签&#xff1a;<img> src&#xff1a;指定图片的url&#xff08;绝对路径/相对路径&#xff09; width&#xff1a;图片的宽度&#xff08;像素/相对于父元素的百分比&#xff09; heigth&#xff1a;图片的高度&#xff08;像素/相对于父元素的百分比&a…

    C语言二级题解:查找字母以及其他字符个数、数字字符串转双精度值、二维数组上下三角区域数据对调

    目录 一、程序填空题 --- 查找字母以及其他字符个数 题目 分析 二、程序修改 --- 数字字符串转双精度值 题目 分析 小数位字符串转数字 三、程序设计 --- 二维数组上下三角区域数据对调 题目 分析 前言 本文来讲解&#xff1a; 查找字母以及其他字符个数、数字字符串…

    VPR概述、资源

    SOTA网站&#xff1a; Visual Place Recognition | Papers With Code VPR&#xff08;Visual Place Recognition&#xff09; 是计算机视觉领域的一项关键任务&#xff0c;旨在通过图像匹配和分析来识别场景或位置。它的目标是根据视觉信息判断某个场景是否与数据库中的场景匹…

    Electron学习笔记,安装环境(1)

    1、支持win7的Electron 的版本是18&#xff0c;这里node.js用的是14版本&#xff08;node-v14.21.3-x86.msi&#xff09;云盘有安装包 Electron 18.x (截至2023年仍在维护中): Chromium: 96 Node.js: 14.17.0 2、安装node环境&#xff0c;node-v14.21.3-x86.msi双击运行选择安…