PWNABLE.TW-BREAK OUT-WP
这道题还是比较刺激的,一开始觉得很简单,直接改 note 指针修改 __free_hook 就行了,结果发现开启了写地址白名单,只允许在堆段上写数据,于是考虑 unsorted bin attack 改白名单,然后无语地发现白名单只读,于是只能 FSOP,然后本机和服务器的堆环境还不一样(明明是一样的 libc),打出了整个堆段分析才找到正确的地址。
…XCTF-sentosa-WP
主要的漏洞点在

这里,当 Input length of your project name:
时输入 0,此处 v2 就会变成 -1,可以栈溢出。
栈环境如下

由于有 canary,有意义的溢出也仅有溢出到 v6。

v6 仅在最后被存入到了指针数组中,又没有 edit 功能,所以我们只能通过部分覆写来实现 leak 和 free。
…
pwn 白名单绕过总结
有些时候 pwn 题目中为了增加难度(实际是为了恶心选手),会使用类似 seccomp 的函数来禁用一部分系统调用,往往会把 execve 这种系统调用禁用掉,基本上拿 shell 是不可能了,但是我们 pwn 题是面向 flag 的,所以还是可以通过 orw( open-read-write )的方法来读出 flag 的。在栈上的 orw 和 普通 rop 其实没有什么特别大的区别,这里主要谈一谈堆利用中的白名单绕过。
…