当前位置: 首页 > news >正文

白帽子讲web安全 编码问题sql注入的 笔记

前言

在书上166面的7.2.4编码问题,讨论了宽字符集,GBK编码导致的漏洞。但是有些地方讲得有点迷糊,也许还有错别字。

所以我结合国外在06年发布的addslashes() Versus mysql_real_escape_string()这篇文章分析了一下。

问题1

白帽子讲web安全 编码问题sql注入的 笔记

这里需要知道,作者借char表达的意思是字符,不是字节

但是加的图所说的“db interprets as 2 chars”和上面的“0xbf27 和 0xbf5c都会被认为是一个字符”就让人头疼了。

所以需要对照着英文看:

In GBK, 0xbf27 is not a valid multi-byte character, but 0xbf5c is. Interpreted as single-byte characters, 0xbf27 is 0xbf (¿) followed by 0x27 ('), and 0xbf5c is 0xbf (¿) followed by 0x5c (\).

That's because 0xbf5c is interpreted as a single character, not two. Oops, there goes the backslash.

根据上面几行英文,和图上的“db interprets as ...”,可以知道

在GBK字符集中,0xbf27 不是一个有效的多字节字符,在解析为单字节字符的过程中,0xbf27 变成了 0xbf(¿) 和 0x27(') 这两个字符,0xbf5c 是GBK字符集里有效的中文字符(縗)

白帽子讲web安全 编码问题sql注入的 笔记

对照着上图,再看原文的图就清楚了。原图的意思是:当0xbf27被解释为2个字符时,是(¿) 和 (')
当0xbf5c被解释为1个字符时,是(縗)

问题2

白帽子讲web安全 编码问题sql注入的 笔记

根据两处对比,可以看到下面的应该是“双字节字符会被认为是两个字符”,而不是字节。

只有将0xbf27认为是2个字符,才可以对0x27这个引号进行转义。所以可能是作者笔误。

扩展

另外提一下,在网上,上面那个英文博客的翻译是有问题的:

白帽子讲web安全 编码问题sql注入的 笔记

原英文:

That's because 0xbf5c is interpreted as a single character, not two. Oops, there goes the backslash.

可以知道,译文把a single character翻译成单字节字符是不对的,应该是单个字符。


我也是刚刚学习web安全,文章99%都是粘贴的。


参考:

互联网安全知多少 - 简书
PHP字符编码绕过漏洞总结 | 鬼仔's Blog

相关文章:

  • 给新浪博客修改博客名字 超级简单图文教程
  • 理解 白帽子讲web安全 ‘alert(\““ + x + “\“)‘
  • 一行JavaScript代码 将 HTML实体 转成 字符
  • maven Filtering true 作用
  • mysql sql语句创建一个简单表
  • 禁止 Apache 默认显示网站目录结构 的方法
  • Typecho Fatal error: Using $this when n...
  • 启用CDN 出现pjax动画失效问题 的解决方法
  • Typecho 配置使用 腾讯CDN服务 的简单教程
  • WWW-Basics (HTTP, Training) 最完整的做法
  • Genymotion 拖入apk 提示 invalid filename
  • 屏蔽 手机QQ黄钻官方团队总送礼物 的简单方法
  • 解决 ubuntu18 打开谷歌浏览器时需要输入密码
  • mybatis parametertype可以不填么
  • failed to save password error code -34018
  • 网络传输文件的问题
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Apache的基本使用
  • EventListener原理
  • exif信息对照
  • extjs4学习之配置
  • github从入门到放弃(1)
  • JavaScript创建对象的四种方式
  • javascript面向对象之创建对象
  • MYSQL 的 IF 函数
  • React16时代,该用什么姿势写 React ?
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue--数据传输
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 开源地图数据可视化库——mapnik
  • 模型微调
  • 七牛云假注销小指南
  • 三栏布局总结
  • 一天一个设计模式之JS实现——适配器模式
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​卜东波研究员:高观点下的少儿计算思维
  • #laravel 通过手动安装依赖PHPExcel#
  • #Ubuntu(修改root信息)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [2016.7.Test1] T1 三进制异或
  • [Android] Upload package to device fails #2720
  • [APIO2015]巴厘岛的雕塑
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [Codeforces] combinatorics (R1600) Part.2