Defcon-30-Quals rust-pwn constricted 复盘笔记

一、简介

这里将记录着本人复盘 Defcon 30 Quals 中 constricted 的复盘笔记。

这道题为 boa 项目提供了一个 git diff,要求在应用这个 diff 后对 boa 进行漏洞利用。boa 是一个使用 rust 编写的 javascript 引擎,要想 pwn 掉它就得编写 JS 的漏洞利用脚本。

当初做这题时自己还没接触过 rust,这次 学成归来后 可以好好看看这题。

这题的意图是想说明,即便是用 rust 编写的程序也仍然会存在漏洞

阅读更多...

浅析 Linux 程序的 Canary 机制

一、简介

一直都比较好奇 Canary 在 Linux 中的实现,但没什么心思去具体了解它的实现。这种好奇心在得知可以通过修改子线程的线程局部存储来达到篡改 canary 目的时达到了高峰,于是想好好去研究一下。

太久没写博客了,这里就简单记录一下。

阅读更多...

syzkaller 源码阅读笔记-1

一、简介

syzkaller 是 google 开源的一款无监督覆盖率引导的 kernel fuzzer,支持包括 Linux、Windows 等操作系统的测试。

syzkaller 有很多个部件。其中:

  • syz-extract:用于解析 syzlang 中的常量
  • syz-sysgen:用于解析 syzlang,提取其中描述的 syscall 和参数类型,以及参数依赖关系
  • syz-manager:用于启动与管理 syzkaller
  • syz-fuzzer:实际在 VM 中运行的 fuzzer
  • syz-executor:实际在 VM 中运行的测试程序

架构图如下:

syzkaller 的进程结构

在本文中,我将先介绍 syz-extract 和 syz-sysgen 的源码。

阅读更多...

论文笔记随笔 - 1

简介

这里存放阅读论文/读代码时所记录下的一些零碎笔记。

由于这部分活动在记录笔记时,出于时间与重要性考虑,只会记录下较为重要的一部分,不会完整记录,因此单篇笔记的篇幅不会太长。

原先是想着把这些随笔放到周报里去,但是这会打乱周报的排版,思来想去还是想单独立一篇文章出来。

阅读更多...

《Binary Rewriting without Control Flow Recovery》论文笔记

一、概述

二进制重写技术在很多场景下都有大用,例如修复、加固、插桩、打补丁、调试等等。而大部分二进制重写技术都依赖于从输入二进制中恢复控制流信息,这是因为这些二进制重写技术通常都涉及指令移动等等,这就必须调整其他跳转指令的相对跳转偏移,即修复跳转目标集

但问题在于,从二进制文件中恢复控制流信息是相当困难的

  • 一种方法是依赖于特定的二进制元数据,例如调试符号来恢复重定位信息,但并非所有二进制都会包含这类元数据(strip)
  • 另一种方法是使用静态二进制分析技术来恢复,但通常效果不佳,而且不能应用于大小较大的二进制文件。

因此大部分二进制重写技术都依赖于一组甚至多组假设,例如特定编译器、特定编程语言等等。这样一来这些二进制重写技术都存在着局限性,难以扩展,同时也没办法处理大型程序,比如 chrome。

这篇论文向我们展示了一种基于 x86_64 的二进制重写技术,称为 e9patch。其中,e9 表示的是 jmpq rel32 的 opcode:0xe9。这种二进制重写技术的优点在于控制流无关control flow agnostic),即无需任何控制流信息的知识。其二进制重写方法保留了跳转目标集,无需控制流恢复。因此, 这个工具相当的鲁棒,而且还可以 patch 诸如 chrome 等等大小大于 100MB 的二进制程序。

除了普通的二进制程序以外,e9patch 还可以为 shared objects 或 libraries 打补丁。

阅读更多...

RWCTF2022 Pwn 笔记3 - hso groupie Writeup

简介

这里是复盘 RWCTF2022 中 hso groupie 题时所写下的一些笔记,考点来源于 Project Zero 的 A deep dive into an NSO zero-click iMessage exploit: Remote Code Execution 一文。

整体的做题思路主要由 Riatre 师傅的 exploit 中所推导出,换句话说,这里的笔记主要是对 作者 exploit 的解释说明。

由于这题同样也较为复杂,因此需要单独开一个博文来记录。

联合作者:sakura

阅读更多...

RWCTF2022 Pwn 笔记1

一、简介

这里是复盘 RWCTF2022 关于:

  • QLaas
  • Who Moved My Block
  • SVME

这三道题时所写下的一些笔记。

受限于时间与效率,一部分题目的 exp 将不再贴出,只会记录下解题或利用的详细流程。

阅读更多...

《IMF:Inferred Model-based Fuzzer》论文笔记

一、简介

  • 内核 API 函数之间的调用大多是相互依赖的,即一些 API 的调用需要依赖其他 API 调用所产生的上下文,因此若给定的调用上下文无用,则内核 API 将会始终执行失败,无法进入到更深层次的逻辑中。

  • 这篇论文提出了一种新的内核 fuzz 方式,它利用内核 API 函数之间的依赖(即 API 调用序列的相似性),来推断出依赖模型,进而利用该模型生成出随机并且结构性良好的 API 序列,进行更深层次的 fuzz。

    其中,API 调用的依赖关系包含两种,分别是

    1. 顺序依赖,即 A 函数应该比 B 函数更早被调用。
    2. 数据依赖,函数调用之间存在着数据流传递。
  • Fuzz 的主要目标是 IOKit Lib

  • IMF src - github

需要注意的是,这篇论文是 17 年的论文,实验时所使用的 MacOS 版本为 10.12.3,而本人的机器版本为 MacOS 12.0.1,因此在复现实验是会存在一些困难。

阅读更多...
  • Copyrights © 2020-2024 Kiprey
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~