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章 Web安全
- 第2章 密码学
- 第3章 逆向工程
- 第4章 Pwn方向
- 第5章 隐写术
- 第6章 数字取证
- 第7章 代码审计
- 第8章 智能合约安全
- 第9章 工控安全
- 第10章 物联网安全
- 第11章 车联网安全
- ChaMd5安全团队