欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > SQL注入漏洞之高阶手法 宽字节注入以及编码解释 以及堆叠注入原理说明

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

2025/7/3 18:37:21 来源:https://blog.csdn.net/zhzx123aa/article/details/144994760  浏览:    关键词:SQL注入漏洞之高阶手法 宽字节注入以及编码解释 以及堆叠注入原理说明

目录

 宽字节注入

编码区分

原理

函数

转译符号解释

注意

绕过方式详解

堆叠【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 --+  

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

    热搜词