CTF实战:技术、解题与进阶_ChaMd5安全团队_AZW3_MOBI_EPUB_PDF_电子书(无页码)_ChaMd5安全团队

内容节选

第4章Pwn方向 Pwn是一个黑客俚语,发声类似“砰”,指的是攻破系统时的声音。在CTF比赛中,Pwn也是重点题型之一,通常比赛中会给选手提供一个存在漏洞的二进制程序、一个网络地址和对应端口,选手需要通过逆向工程对程序进行分析,挖掘其中存在的漏洞,绕过系统保护机制,编写漏洞利用程序,对题目提供的目标系统的网络地址和端口发起攻击,最终获取目标系统的权限,获取系统上的重要信息(flag)。 Pwn是CTF比赛中难度比较高的题目,主要是因为需要学习和掌握的知识多,包括汇编语言、C语言、Linux基础、漏洞基础等,这些知识难度大并且学习周期长,令人望而生畏。本章以讲解与真题结合的方式,帮助读者更快更好地掌握Pwn的相关技术。 4.1 Pwn基础 本节带领读者学习Pwn的基础知识,掌握这些知识,读者可以对系统与程序运行有更深入的理解,为之后学习漏洞原理、漏洞利用打下基础。 4.1.1 常用三大工具 我们常说工欲善其事必先利其器,下面介绍Pwn常用的三大工具。 1. 反汇编工具——IDA Pro 通常比赛中会提供一个二进制程序,了解程序的逻辑才能进行漏洞挖掘。下面介绍IDA Pro及插件Hex-Rays Decompiler,用于对代码进行反汇编。 安装Hex-Rays Decompiler后,通过F5快捷键可以将汇编语言还原成可读性高的类C伪代码,这可以帮助我们快速了解程序的逻辑和挖掘漏洞。我们以如下C语言代码为例。 将上述代码使用gcc HelloWorld.c-o HelloWorld命令编译后,可以得到一个二进制文件,将二进制文件使用IDA Pro打开,可以看到反汇编的结果,如图4-1所示。 图4-1 IDA Pro中HelloWorld的反汇编结果 接下来使用快捷键F5将反汇编结果转换成高可读的类C伪代码,如图4-2所示。 图4-2 IDA Pro中HelloWorld伪代码结果 对比图4-2和代码HelloWorld.c,可以非常明显地看出IDA Pro基本上将汇编代码还原回源代码,这是由于HelloWorld的代码比较简单。IDA Pro可以帮助我们了解程序的逻辑,这将大大提高挖掘漏洞的效率。 在复杂的题目中,我们经常会遇到复杂的结构,虽然IDA Pro插件转换的伪代码可读性很高,但是依然会让我们一头雾水。IDA Pro提供了自定义结构体,可以帮助我们理解程序逻辑,下面举一个简单的例子,代码如下。 将上述代码使用gcc Struct.c-o Struct命令编译后,可以得到一个二进制文件,将二进制文件使用IDA Pro打开并按下F5快捷键,可以看到伪代码的结果,如图4-3所示。 图4-3 IDA Pro中的伪代码 接下来我们看一下在IDA Pro中如何创建结构体。首先切换到结构体窗口,然后按快捷键Inster或使用Eidt菜单下的Add struct type子菜单创建新的结构体,最后按快捷键D创建新的成员或修改成员。也可以通过鼠标右键或快捷键N修改成员名称和成员类型,右键菜单如图4-4所示。 图4-4 IDA Pro中结构体操作右键菜单 通过上面的方法,我们可以创建一个student结构体,如图4-5所示。 图4-5 IDA Pro中自定义结构体 在伪代码窗口,将变量或函数的参数类型设置成我们新创建的结构体student的指针类型,程序的逻辑就变得更清晰了,如图4-6所示。 图4-6 IDA Pro中添加自定义结构体后伪代码 2. 调试工具——GNU Debugger GNU Debugger(GDB)是GNU软件系统的标准调试器,支持多种语言的调试,操作模式就是使用一些命令进行调试。接下来讲解一些常见的命令,帮助读者快速掌握GDB的使用方法。 GDB可以直接新运行程序,也可以附加到当前已经运行的进程中,常见命令如表4-1所示。 表4-1 GDB常见命令 当我们使用GDB启动一个进程或者将GDB附加到现有的进程后,可以给程序设置断点,对程序流程或者数据进行观察,然后控制程序的运行,具体命令如表4-2所示。 表4-2 GDB的断点与流程控制命令 在程序调试过程中触发断点之后,我们查看当前的寄存器或内存的数据,验证是否与设想的结果一致或者是否存在触发漏洞,具体操作命令如表4-3所示。 表4-3 GDB数据代码相关命令 GDB虽然存在UI界面,不过使用起来很不方便,而命令用起来比较烦琐,重复命令很多,比如寄存器每次变化、当前要执行的汇编代码、栈的数据情况。我们可以使用一些开源的增强插件,在每次指令执行前后,输出新的寄存器数据和汇编代码,这样增加了很多非常实用的命令,例如heap、vmmap等,下面列出几个常用的插件与链接,读者可以按需安装,笔者常用的是第一个。 ·Pwndbg:https://github.com/Pwndbg/......

  1. 信息
  2. 赞誉
  3. 前言
  4. 第1章 Web安全
  5. 第2章 密码学
  6. 第3章 逆向工程
  7. 第4章 Pwn方向
  8. 第5章 隐写术
  9. 第6章 数字取证
  10. 第7章 代码审计
  11. 第8章 智能合约安全
  12. 第9章 工控安全
  13. 第10章 物联网安全
  14. 第11章 车联网安全
  15. ChaMd5安全团队