zeratool:基于 angr 的CTF pwn 自动化利用工具介绍

文章首发于 先知社区 前言 Zeratool 实现了针对 CTF 中的 pwn 题的自动化利用生成(Automatic Exploit Generation)以及远程获取 flag。 它基于 angr, 探索程序未约束的状态,继而分析状态的寄存器信息和内存布局,设定约束,对约束进行求解,结合 pwntools 编写脚本,提交 payload 到远程 CTF 服务器获得 flag。 本篇文章结合源码对 zeratool 的实现思路进行分析。通过阅读该文,可以对angr 和 pwn的自动化利用进一步认识。 注:zeratool 基于 angr7 ,不兼容当前的 angr8 使用 Zeratool 主要针对栈溢出和格式化字符串漏洞,实现的漏洞利用方式如下: 栈溢出漏洞——修改 pc:win function / shellcode / rop chain /one gadget 格式化字符串——修改 got 表项: win function / shellcode zeratool 接收 binary 作为参数,同时可以配置其他选项: [chris:~/Zeratool] [angr] python zeratool.py -h usage: zeratool.py [-h] [-l LIBC] [-u URL] [-p PORT] [-v] file positional arguments: file File to analyze optional arguments: -h, --help show this help message and exit # 帮助信息 -l LIBC, --libc LIBC libc to use # 指定 libc -u URL, --url URL Remote URL to pwn # 远程 Url -p PORT, --port PORT Remote port to pwn # 远程端口 -v, --verbose Verbose mode # 设置调试模式 使用示例:...

基于 Angr 的漏洞利用自动生成之缓冲区溢出案例分析

文章首发于 先知社区 前言 本文将结合 angr 官方提供的示例 insomnihack_aeg 展示基于 angr 的简单自动利用生成,分析各个步骤并介绍相关接口。通过阅读本文,可以对 angr 和简单 AEG 有进一步的认识。 相关源文件在 insomnihack_aeg 中。 demo_bin 为二进制程序,demo_bin.c 为源代码,solve.py 是自动生成 exploit 的脚本 程序分析 首先分析一下程序源代码 demo_bin.c ,该程序有一个明显缓冲区溢出。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> char component_name[128] = {0}; #buffer 大小为 128 typedef struct component { char name[32]; # length 只有 32,小于 128 int (*do_something)(int arg); } comp_t; int sample_func(int x) { printf(" - %s- recieved argument %d\n", component_name, x); } comp_t *initialize_component(char *cmp_name) { int i = 0; comp_t *cmp; cmp = malloc(sizeof(struct component)); cmp->do_something = sample_func; printf("Copying component name....

Rex: 自动化利用引擎分析

Rex: 自动化利用引擎分析 文章首发于 先知社区 前言 最近在看 rex,没有官方文档,已有的教程也有点过时,基本只能通过看源码学习。 本篇教程当作是学习的记录,也希望能帮助研究 AEG 的同学快速上手 rex,对 rex 的架构和使用方式有个整体的认识。 概述 Rex 是 Shellphish 团队开发的自动生成 exploit 的引擎,是 Mechaphish 中的一个模块,最初用于 CGC 竞赛。 Rex 基于硬件模拟器 QEMU 和 angr ,通过混合执行(Concolic Execution)复现崩溃路径,根据寄存器及内存信息对漏洞类型/可利用性进行判定等,并尝试应用多种漏洞利用技术自动生成利用脚本。 本篇文章会介绍 rex 安装/顶层接口/内部实现/相关依赖等内容。 安装 有两种方法 安装 rex 及其依赖 直接安装 mechaphish 镜像 推荐直接使用 shellphish/mechaphish docker 镜像,比较方便 docker pull shellphish/mechaphish; docker run -it shellphish/mechaphish rex 基于 angr,关于 angr 的使用方式,可以查看我的另一篇教程。 测试 首先测试一下 rex 是否安装成功,简单测试代码如下: tg = archr.targets.LocalTarget(<path_to_binary>, target_os='cgc') crash = rex....