这是 mac 10.15.7 环境下的一个 Pwn 题目

Untitled

文件的保护机制

sandbox

(version 1)
(deny default)

(allow process-exec* 
    (path "/Users/ctf/machbooks/machbooks"))

(allow file-write* file-read-data file-read-metadata
    (subpath "/Users/ctf/machbooks/tmp"))

(allow file-read-data 
    (path "/Users/ctf/machbooks/flag"))

(allow file-read-metadata
    (subpath "/usr/lib"))

fat binaryies

且这是一种 Universal (fat) binaries 可以兼容多种设备

之所以能够兼容是因为含有多个不同架构的独立二进制文件,执行时, 只会选择一种架构的二进制文件。不过也会带来一个弊端:体积较大,这也是为何又称之为胖二进制的原因。

https://blog.csdn.net/qq_22389025/article/details/80596660

这种文件,我们不能利用 ROPgadgets ropper 去找对应的 gadgets 因为这些工具都不支持 fat binaries

我们可以在 mach-o 中找到 gadgets 但是在 libraries 中很难找到 gadgets 因为 macos 中的这些文件都是 fat binaryies

ASLR, PIE

在 macos 中这两个保护是默认开启的

动态库地址加载一次后就会是固定的,我们只需要泄露一次