Calling a function in C without naming it
9 hours ago
- 学校评分系统限制函数只能使用批准的符号,阻止直接调用execve。
- ASLR随机化地址,但函数之间的相对偏移保持不变。
- 系统使用AddressSanitizer (ASan)编译,替换了一些libc函数如printf,但不替换execve或mmap。
- 通过一个允许的单独练习泄露printf和mmap之间的偏移,以计算mmap地址。
- 使用联合类型双关来绕过编译器对函数指针转换的限制。
- 调用mmap分配可写可执行内存,然后写入系统调用shellcode。
- 通过自定义shellcode执行任意系统调用(如execve)以获取shell访问权限。
- 该漏洞难以修补,因为ASLR和名称检查无效,且ASan有助于攻击。