这是 mac 10.15.7 环境下的一个 Pwn 题目
(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"))
file-write* file-read-data file-read-metadata
这些文件操作/usr/lib
下的 元数据且这是一种 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
在 macos 中这两个保护是默认开启的
动态库地址加载一次后就会是固定的,我们只需要泄露一次