WARGAME/pwnable.tw

pwnable.tw start write-up

msh1307 2022. 8. 20. 18:49

받은 바이너리부터 IDA로 열어봤다.

바이너리 자체는 되게 간단하다.

x86_32 syscall table 확인해보면 stdout에 출력하고, stdin을 read 해주는 간단한 바이너리라는 것을 알 수 있다.

바이너리 mitigation은 안 보인다.

NX 안걸려있어서 execute 권한이 스택에 있다.

 

여기서 bof가 터진다.

 

처음에는 bof로 ret를 덮고, eip는 32비트니까 대충 NOP Sled 태워서 익스하려고 했다.

근데 0x3c라서 안 되겠다 싶었다.

IDA를 다시 보니까 처음에 esp를 push 하는 게 보인다.

그래서 esp leak 하고 익스해야겠다고 생각했다.

 

ubuntu20.04 로컬 환경에서 leak을 진행했다.

push 이렇게 되니까, 0x18 만큼 덮으면 esp 전까지 덮인다.

0x0804808은 mov ecx, esp 부분이다.

이걸로 ret 덮으면, esp 부터 쭉 출력하니까, esp를 leak 할 수 있다.

0xffa88980이 esp다.

이렇게 해주면 뽑을 수 있다.

잘 나온다.

 

이제 leak 했으니 0x14로 dummy 채우고, leak 한 esp + 0x14로 ret 덮고, shellcode 넣어주면 된다.

최종적으로 작성한 코드다.

잘 동작한다.

 

remote로 바꿔서 해보면

이렇게 된다.

leak 하는 부분을 조금 바꿔줬다.

'WARGAME > pwnable.tw' 카테고리의 다른 글

pwnable.tw calc write-up  (0) 2022.08.23
pwnable.tw orw write-up  (0) 2022.08.20