본문으로 바로가기

Hackcon Mini 2017 Pwnable WriteUp

category 해킹/Write Up 2017. 2. 12. 11:43

0. Introduce

 분명 10시쯤인가 ctf가 안열려있길레 자고일어나서하려고 7시에 일어났더니 끝나있던 ctf.. ㅋㅋㅋㅋㅋ 그래도 포너블 문제만 풀어보려고 접속했는데 문제가 생각보다 쉽고 은근 재밌어서 다풀었습니다. 푸는건 1시간정도 걸린거같은데 익스정리하는게 좀 오래걸리네요..

요세 최근 ctf몇개 풀어보면 rand함수에대해서 많이 나오는거같아요. 이번 코게2017문제도 rand문제가 있던거같은데.. 빨리 라업이 나왔으면 좋겠네요..

ctf - http://hackcon.in/

Challenges


포너블문제는 이렇게 3문제가 나왔다.


1) Random


- Vulnerability

소스는 정말 단순하다.(64-bit binary) rand함수로 생성한 난수와 입력값이 같으면 cat flag로 flag를 출력해준다.


- Exploit

사실 seed값이 time(0)이기때문에 똑같은 프로그램을 만들어 seed를 time(0)으로 주고 출력하면 flag를 얻을 수 있는데, 실제 대회서버는 응답이 너무느려서 (외국이라 그런가..) 그게 안됬다. 하지만 친절히 seed값을 출력해주므로 seed를 입력해서 flag를 얻었다.

(https://github.com/LYoungJoo/CTF-Write-Up/blob/master/2017_Hackcon_Minipwn%20Write%20Up/Random.c)


- Flag





2) Game Of Integers - Part 1


- Vulnerability

마찬가지로 소스는 매우 단순하다. Nx와 Stack Canary가 걸려있지만 신경쓰지 않아도 된다.

취약점은 &v6부터 원하는 위치에 원하는 값을 쓸 수 있는것이다.


- Exploit

ret을 덮어씌우면 되는데, 고맙게도 프로그램안에 run_me라는 system("cat flag");를 해주는 함수가 있다. 

v6부터 dummy(96) + ret(4)형식으로 ret을 조작할 수 있는데 이문제에서는 dummy값이 필요없고 바로 ret을 조작할 수 있다.

(https://github.com/LYoungJoo/CTF-Write-Up/blob/master/2017_Hackcon_Minipwn%20Write%20Up/Game%20of%20Integers%20-%20Part%201.py)


- Flag





3) Game Of Integers - Part 2


- Vulnerability

이 문제는 전문제랑 비슷한데 더 좋아졌다. v8부터 원하는 위치에 원하는 만큼 쓸 수 있도록 바뀌었다.

하지만 run_me를 확인해보면 다음과같이 cat flag가 없어진걸 볼 수 있다.


뭔가 다른방식으로 풀라는거 같다.


- Exploit

처음에는 그냥 got overwrite로 풀려고 보니까 plt에 fflush, puts, system, scanf밖에 없었다. 바이너리에 %s가 없는지라 scanf로 값을 쓸 수도 없었다. 그래서 ROP로 풀어보려고 가젯들을 확인해보니 아무리봐도 쓸만한 가젯들이 없었다.. 그래서 삽질을 조금 하다가 plt에 system함수가 있는걸 보고 설마 바이너리에 cat flag가 있겠어... 했는데 진짜 있었다.


run_me함수를 어셈으로 확인해보면 발견할 수 있다.. 그래서 RTL로 풀었다. (주의할 점이라면 패킹을 안하고 정수형태로 값을 줘야한다.)

(https://github.com/LYoungJoo/CTF-Write-Up/blob/master/2017_Hackcon_Minipwn%20Write%20Up/Game%20of%20Integers%20-%20Part%202.py)


- Flag


'해킹 > Write Up' 카테고리의 다른 글

Codegate 2017 prequals BabyMISC Write Up  (0) 2017.02.16
Codegate 2017 prequals Babypwn Write Up  (0) 2017.02.16
Plaid CTF 2014 ezhp Write Up  (0) 2017.01.29
Codegate 2014 angry_doraemon  (0) 2017.01.28
HDcon luckyzzang write up  (0) 2017.01.27