两周前在*CTF上遇到一道Arm64的Linux kernel pwn,虽然漏洞是非常明显的栈溢出,但是学会怎么利用确实花费了一番功夫,因为确实不是很懂Arm64的一些机制,主要是不知道如何正确地从内核返回用户态。虽然最后磕磕绊绊地做出来了,但是最后没法执行system或者execve直接开shell,无奈只能orw读flag,赛后不论是官方发出的WP还是其他师傅的博客,都没有找到解决这个问题的满意的答案。
于是自己花了点时间分析了一下,终于是找到了根本原因,遂写下此文记录一番,同时希望借此互相学习交流。