一、引言

原文:Exploiting Format String Vulnerabilities

作者:scut@team-teso.net

译者:飞龙

日期:2001.9.1

版本:v1.2

这篇文章解释了某种现象的本质,它已经在 2000 年的下半年震惊了整个安全社群。它就是“格式化字符串漏洞”,是一种被发现的新型漏洞,并且会导致一系列的可利用 bug,它们在各种程序中都有发现,从小型工具到大型服务器应用。

这篇文章尝试解释该漏洞的结构,并随后使用这个只是去构建复杂的利用,它会向你展示如何在 C 代码中发现格式化字符串漏洞,以及为什么这种新型漏洞比通常的缓冲区溢出漏洞更加危险。

这篇文章基于我在德国柏林进行的一个德语演讲“17th Chaos Communication Congress”。演讲之后,我收到了无数翻译它的请求,并收到了很多正面反馈。所有这些激励了我来复查这篇文档,更新和纠正细节,以及制作一个更加易用的 LaTeX 版本。

这篇文章涵盖了其它文章涉及的大多数东西,以及涉及到利用时的一些更多的技巧。在本文完成之时,它是最新的,并且欢迎反馈。所以在你读完之后,请向 scut@team-teso.net 发送反馈,建议和任何不是抱怨的东西。

这篇文章的第一个部分是格式化字符串漏洞的历史和认识,后面是如何在源码中发现和避免该漏洞的细节。之后,一些基本技巧为玩转该漏洞而开发,从中诞生了一些强有力的利用方式,这个方式之后被修改、改进和实际应用到特殊的场景中,允许你利用至今几乎所有类型的格式化字符串漏洞。

对于每个漏洞来说,它们都有一段时间了,而且新的技术的出现,通常由于旧技术在特定场景下不工作了。由于一些在文本中提到的技巧,一些人应当受到尊敬,并且极大影响了我的写作,他们是 tf8,它编写了第一个格式化字符串利用,portal,它在它的文章中开发和研究了可利用性,DiGiT,它发现了至今为止大多数高危的远程格式化字符串漏洞,以及 smiler,它开发了复杂的爆破技巧。

虽然我在没有太大帮助的情况下,也贡献了一些技巧,一些评论和技巧,以理论或者漏洞利用的形式,由它们展示给我,否则这篇文章就不太可能完成。非常感谢,我也要感谢无数评论、复查和改进写篇文章的人。

更新和修正后的版本在 TESO 安全小组的主页上可以找到。

1.1 缓冲区溢出 vs 格式化字符串漏洞

由于过去几乎所有严重的漏洞都是某种缓冲区溢出,我们可以将这种严重并且低级的漏洞和这一新兴漏洞相比较。

缓冲区溢出 格式化字符串
发布时间 20 世纪 80 年代中期
意识到危险 20 世纪 90 年代
利用数量 几千
被认为 安全威胁
技巧 进化并且先进
可见性 有时非常困难

1.2 统计:2000 年重要的格式化字符串漏洞

为了强调格式化字符串漏洞在 2000 年的危险影响,我们在这里例举了最为可利用的公开漏洞。

应用 发现人 影响 年限
wu-ftpd 2.* security.is 远程 root

6

Linux rpc.statd security.is 远程 root

4

IRIX telnetd LSD 远程 root

8

Qualcomm Popper 2.53 security.is 远程用户

3

Apache + PHP3 security.is 远程用户

2

NLS / locale CORE SDI 本地 root
screen Jouko Pynnonen 本地 root

5

BSD chpass TESO 本地 root
OpenBSD fstat ktwo 本地 root

在本文完成之时,还有很多未知或者未发现的漏洞,并且接下来的两到三年,格式化字符串漏洞会为已发现的新漏洞的统计做出贡献。我们已经看到,它们易于使用更加复杂的工具自动化发现,并且你可以假设,对于多数现在的漏洞,代码虽然没有公开,但是漏洞已经存在了。

也有一些在应用中发现这一类型咯多年过得方式,它们只在二进制中可用。为此,使用了一种更加通用的方式来寻找“参数缺失”,它在 Halvar Flakes 的二进制审计演讲中有所展示。

格式化字符串漏洞利用 一、引言相关推荐

  1. (Buuctf) [第五空间2019 决赛]PWN5 简单格式化字符串漏洞利用

    这题是个基本格式化字符串漏洞利用; 满足if条件即可得到答案; 使 nptr 与 dword_804C044 相等即可; 可以使我们利用的是 第一次的输入输出; addr=0x804C044 payl ...

  2. 格式化字符串漏洞利用时计算的偏移到底是什么?

    格式化字符串漏洞利用时计算的偏移到底是什么? 我们平时在自己做题或者是看大佬们的wp时都会看见这种说法 说法一: 说法二: 相信有不少半路出家的小白都和我一样都只是知其然不知其所以然,那这里所说的&q ...

  3. Linux下的格式化字符串漏洞利用姿势

    [转]http://www.cnblogs.com/Ox9A82/p/5429099.html linux最早的漏洞防护机制nx-stack刚刚出现后就有人想出了突破方法.那就是只有栈是不可执行,而除 ...

  4. 格式化字符串漏洞利用 五、爆破

    五.爆破 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1.2 当利用 ...

  5. 格式化字符串漏洞利用 七、工具

    七.工具 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1.2 一旦利 ...

  6. 格式化字符串漏洞利用 六、特殊案例

    六.特殊案例 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1.2 有 ...

  7. linux获取字符格式化,Linux 格式化字符串漏洞利用

    目的是接觸一些常見的漏洞,增加自己的視野.格式化字符串危害最大的就兩點,一點是leak memory,一點就是可以在內存中寫入數據,簡單來說就是格式化字符串可以進行內存地址的讀寫.下面結合着自己的學習 ...

  8. 格式化字符串漏洞利用 三、格式化字符串漏洞

    三.格式化字符串漏洞 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1 ...

  9. 格式化字符串漏洞利用

    学习资料: https://ctf-wiki.github.io/ctf-wiki/pwn/linux/fmtstr/fmtstr_exploit/                        ht ...

最新文章

  1. java ee 6 sdk中文版,Java EE 6 SDK+Eclipse JEE+Android ADT-Fun言
  2. mysql 速度检索
  3. farbox editor是个好东西
  4. hashmap value占用空间大小_求比HashMap占用内存少的查找方法
  5. Android Wifi方法大全
  6. mysql中locat函数,MySQL中的LOCATE和POSITION函数使用方法 | 很文博客
  7. java中Date和DateFormat、SimpleDateFormat类
  8. 江苏省计算机学会博士论文,江苏学会网 欢迎您成为江苏省计算机学会会员
  9. Linux 主机规划与磁盘分区
  10. warning C4995: strcat name was marked as #pragma deprecated
  11. win10系统计算机如何分盘,win10新电脑怎么合理分盘?给win10电脑合理分盘的设置方法...
  12. Java支付宝订单查询
  13. 米家扫地机器人尘盒怎么取_米家扫地机器人怎么打开尘盒
  14. 公司股权可以无偿转让吗
  15. 深入学习Linux摄像头(一)v4l2应用编程
  16. centos8重启网卡服务
  17. 安装zabbix及部署
  18. oracle查找当前日期的三个工作日前那天日期,采用函数方式
  19. 数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
  20. 新冠疫苗预约小程序设计与实现的源码+文档

热门文章

  1. 《机器学习实战》学习笔记(八)
  2. 免费共享给大家一些免费的代理服务器(包括sock http https)
  3. R 语言 state 数据集的可视化
  4. Android tips(十二)--Android开发中使用矢量图
  5. module blacklist
  6. 通用型系统架构设计(多图)
  7. Western blot 技术
  8. android平台应用GPIO模拟IR控制车载DTV
  9. 百度大脑人体分析服务3月上新盘点
  10. 2004.8.19日--全国3D第2期