PwnPasi技术实现详解:PWN自动化漏洞利用工具
Ba1_Ma0 安全工具 217浏览 · 2025-03-21 05:44

前言

在二进制漏洞挖掘和利用(Pwn)领域,手动分析和利用漏洞往往耗时且复杂。为了提高效率,自动化工具应运而生。PwnPasi 是一款基于 Python 的自动化漏洞利用工具,旨在帮助安全研究人员快速识别和利用常见的二进制漏洞,如栈溢出、格式化字符串漏洞等。本文将详细介绍 PwnPasi 的技术实现,包括如何自动识别溢出边界大小、自动识别漏洞类型、自动识别格式化字符串漏洞以及自动绕过 Canary 防护。

自动识别溢出边界大小

在栈溢出漏洞利用中,确定溢出所需的填充字符数(padding)是关键步骤之一。PwnPasi 通过以下步骤自动识别溢出边界大小:

测试栈溢出漏洞

PwnPasi 通过向目标程序发送逐步增加的字符序列来测试是否存在栈溢出漏洞。具体步骤如下:

初始化字符序列:从字符 'A' 开始,逐步增加字符序列的长度。

发送输入:将字符序列发送给目标程序,并监控程序的返回码。

检测崩溃:如果程序返回码为 -11(即段错误),则说明程序发生了栈溢出,此时记录当前的字符数作为溢出边界大小。

image.png


PwnPasi 还允许用户通过命令行参数指定溢出边界大小,从而跳过自动检测步骤。

image.png


自动识别漏洞类型

PwnPasi 能够自动识别目标程序的漏洞类型,包括栈溢出、格式化字符串漏洞等。

自动识别函数

在漏洞利用过程中,识别目标程序中的关键函数(如 system、puts、write 等)是非常重要的。PwnPasi 通过以下步骤自动识别目标程序中的关键函数:

使用 objdump 分析 PLT 表

PwnPasi 使用 objdump 工具分析目标程序的 PLT 表,识别其中的关键函数地址。

执行 objdump 命令:通过 objdump -d 命令反汇编目标程序,并将结果保存到文件中。解析反汇编结果:从反汇编结果中提取关键函数的地址

设置函数标志

PwnPasi 会根据识别到的函数地址,设置相应的标志位,以便后续利用。

image.png


识别函数后的利用

根据识别到的函数,PwnPasi 会选择合适的利用方式。例如,如果识别到 system 函数和 /bin/sh 字符串,PwnPasi 会尝试直接调用 system("/bin/sh") 来获取 shell

检查程序保护机制

PwnPasi 使用 checksec 工具检查目标程序的保护机制,如 RELRO、Stack Canary、NX、PIE 等。根据检查结果,工具会判断是否存在栈溢出漏洞或格式化字符串漏洞。

image.png


自动识别格式化字符串漏洞

格式化字符串漏洞是一种常见的漏洞类型,PwnPasi 通过以下步骤自动识别并利用该漏洞:

检测格式化字符串漏洞

PwnPasi 通过向目标程序发送一系列格式化字符串测试用例,检测程序是否输出内存地址或崩溃,从而判断是否存在格式化字符串漏洞。

image.png


自动构建 ROP 链

ROP(Return-Oriented Programming)是一种常见的漏洞利用技术,通过组合程序中的 gadget 来执行任意代码。PwnPasi 能够自动识别目标程序中的 gadget 并构建 ROP 链

查找 ROP Gadget

PwnPasi 使用 ropper 工具查找目标程序中的 ROP gadget,如 pop rdi, pop rsi, ret 等。

具体步骤如下:执行 ropper 命令:通过 ropper 工具查找目标程序中的 gadget,并将结果保存到文件中。

解析 gadget 结果:从结果中提取关键 gadget 的地址。

在识别到所需的 gadget 后,PwnPasi 会根据漏洞类型和利用目标自动构建 ROP 链

除此之外,pwnpasi还能自动识别canary防护并绕过

项目地址

pwnpasi 是一款专为CTF PWN方向入门基础题目开发设计的自动化工具,旨在帮助新手小白快速识别和利用32位和64位程序中的栈溢出漏洞与格式化字符串漏洞。该工具能够自动判断溢出字符数,自动识别格式化字符串漏洞,自动识别程序调用的动态链接库,并生成相应的ROP链以利用漏洞。支持多种利用方式,包括调用system后门函数、写入shellcode、puts函数ROP、write函数ROP以及syscall ROP,格式化字符串利用,可自动识别并绕过PIE防护与canary防护。此外,工具还具备本地和远程利用功能,并集成了LibcSearcher库,用于在没有提供libc地址的情况下自动搜索合适的libc版本

0 条评论
某人
表情
可输入 255