- 第一部分: Introduction to Exploit Development
- 第二部分:Saved Return Pointer Overflows
- 第三部分:Structured Exception Handler (SEH)
- 第四部分:Egg Hunters
- 第五部分:Unicode 0x00410041
- 第六部分:WIN32 shellcode 编写
- 第七部分:返回导向编程(ROP)
- 第八部分:堆喷射第一节【覆写 EIP】
- 第九部分:堆喷射[第二章:UAF]
- 第十部分:内核利用程序之栈溢出
- 第十一部分:内核利用程序之任意位置任意写
- 第十二部分:内核利用程序之空指针引用
- 第十三部分:内核利用程序之未初始化栈变量
- 第十四部分:内核利用程序之整数溢出
- 第十五部分:内核利用程序之 UAF
- 第十六部分:内核利用程序之池溢出
- 第十七部分:内核利用程序之任意位置任意写
- 第十八篇:内核利用程序之 RS2 Bitmap 巫术
- 第十九篇:内核利用程序之 Razer
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Unicode 介绍
理解什么是 unicode 很重要. 假设有一个程序接受用户的输入,如果用户是比利时或美国字符编码可能不会有什么影响,因为我们(通常) 使用同样的字符集. 然而,如果用户用的是阿拉伯或中文字符集会怎么样呢? 显然它们不能用 ASCII 转换成相应语言. 如果软件开发者希望开发国际化的产品,不免要面对 unicode. 基本上 unicode 用一致方式直观表示大多数的字符集(ASCII 7 位表示 unicode 16 位表示). Unicode 字符代码:这里
我们猜想 unicode 类似于使用有限字符集(更多的在后面). 当我们利用这类型的漏洞是,传进去的字符会被传化为 unicode. 一般上仅仅在原始字节的前面追加 0x00. 看这面这个例子:
ASCII: A ==> 0x41 Unicode: A ==> 0x0041 2-bytes: AB ==> 0x4142 (ASCII) AB ==> 0x00410042 (Unicode)
显然这是一个大问题,像之前我们用于覆盖 EIP 的地址都会被转化为 unicode. 更别提 Shellcode 了(=头痛). 因此很长一段时间内人们普遍认为 uniocde 的漏洞不能利用. 然而, 2002 Chris 的一篇文章证明这是错的. 为了细致的分析 unicode 漏洞利用原理我推荐你看 Phrack 在 2003 年发的这篇文章. 大概对 unicode 利用最显著的贡献是 SkyLined 发布的编码器(alpha2), 他可以生成兼容 unicode 的 Shellcode. 更多细节在后面。
上面的介绍会使我们的漏洞利用更清晰. 再次说明这篇教程不会覆盖所有的系列,你还需要做更多的研究. 好吧,开始我们的旅途!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论