해킹/Write Up

2018 SharifCTF OldSchool-NewAge WriteUp

NextLine 2018. 2. 4. 21:51

0. Introduction

요세는 귀찮아서 문제를 푼다음에 라업을 안올렸는데 블로그 스킨을 바꿔서 다시 올려본다.

이문제는 매우 쉬운데 오기가 생겨서 어렵게 풀어봤다.


1. Binary

RELRO

 STACK CANARY 

 NX

 PIE

 RPATH

 RUNPATH

 FILE

 No RELRO

 No canary found 

 NX enabled

  No PIE

 No RPATH

 No RUNPATH

 vuln4


대부분의 보호기법이 꺼져있다.


2. Vulnerability

명백한 bof 취약점이다. A를 꾹누르면 eip가 0x41414141로 바뀐다.


3. Exploit

eip가 바로 바뀌므로 rop로 Exploit을 할 수 있다. 하지만 서버에서는 조건이 하나 붙는다.

This time it is randomized...

You should find puts yourself

바로 plt를 사용할 수 없다는것이다. 하지만 바이너리에 puts를 사용하는 부분이 있으므로 rop를 할 수 있고 쉽게 풀린다.

그런데 codeblue의 simple memo pad를 풀때가 생각나서 연습도 할겸 strtab 포인터를 덮어서 exploit 했다.

exploit 조건이나 위치선정을 알아놨으니 다음에 그런문제가 나온다면 꼭 풀것이다.


Exploit plan

1. fgets를 이용해 bss에 fake_strtab을 작성

2. strcpy를 이용해 strtab overwrite

3. fflush@plt + 6를 호출해 system('/bin/sh') 호출


https://github.com/LYoungJoo/CTF/blob/master/pwn/2018/SharifCTF/OldSchool-NewAge.py