-
-
[原创]星盟安全团队TNT
-
2022-5-8 21:11
2972
-
题干:VDSO attack
设计思路
纯汇编编写,栈溢出调用系统BPI
解题思路
本题只有一个符号表,没有使用libc中的函数,题目开始使用的系统调用写入0x400数据到v1,但是v1只有0x10大小,所以存在栈溢出漏洞,由于没有libc,所以无法使用普通ROP构造链条,这里只能打系统信号机制,系统调用中read返回给rax输入的个数,系统调用号15(64位)32位是77,会触发Sigreturn,把栈上的数据返回给寄存器。系统在执行sigreturn系统调用的时候,不会对signa做检查,它不知道当前这个frame是不是之前保存的哪个frame。由于sigreturn会从用户栈上恢复所有寄存器的值,而用户栈是保存在用户进程的地址空间中的,是用户进程可读写的。如果攻击者可以控制栈,也就控制了所有寄存器的值,而这一切只需要一个gadget:“syscall;retn”,并且该gadget的地址在一些较老的系统上是没有随机化的,通常可以在vsyscall中找到,地址为0xffffffffff600000。如果是32位linux,则可以寻找int 80 指令,通常可以在vDSO中找到,但是这个地址可能是随机的
看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~
最后于 2022-5-23 12:05
被kanxue编辑
,原因: