内核调试与利用:iOS内核堆漏洞分析
1. 漏洞背景与初始信息
在进行iOS内核调试与利用的过程中,我们首先遇到了一个特定的错误信息。操作系统版本为iPhone OS 4.2.1 (8C148),出现了 sleh_abort
错误,这是内核模式下的预取中止,故障地址为 0x450044
。相关寄存器的值如下:
| 寄存器 | 值 |
| — | — |
| r0 | 0x00000016 |
| r1 | 0x00000000 |
| r2 | 0x00000058 |
| r3 | 0xcdbf37d0 |
| r4 | 0x00410041 |
| r5 | 0x00420042 |
| r6 | 0x00430043 |
| r7 | 0x00440044 |
| r8 | 0x8a3ee804 |
| r9 | 0x00000000 |
| r10 | 0x81b44250 |
| r11 | 0xc07c7000 |
| 12 | 0x89640c88 |
| sp | 0xcdbf37e8 |
| lr | 0x8011c457 |
| pc | 0x00450044 |
| cpsr | 0x20000033 |
| fsr | 0x00000005 |
| far | 0x00450044 |
要完成漏洞利用,需要通过用户空间的 mmap()
将一些shellcode映射到地址