본문 바로가기

My Study/Crack Me

Defcon 2010 예선 바이너리 2번

리눅스 바이너리 문제는 정말 많은 경험이 엄청난 힘이 될꺼같다.. -_-;; 리눅스를 잘 모르는 나로선 명령어 하나하나라도 잘 활용하며 문제를 푸는 습관을 길러야겠다.
====================================================================
문제 : What treasure did pirates get?
일단 문제 파일을 받아서.. 나에게 깔려있는 linux는 ubuntu 이므로 ubuntu에서 돌려보았다.

Segmentation fault가 뜨는 것을 볼수있었다. 이건 뭐지.. -.-;;

일단 디버깅을 해보기 전에 파일의 정보를 먼저 알아야 하므로 파일의 정보를 보았다.

32bit -ELF파일인건 알겠는데.. 실행가 뭐가 문제인지 여기선 무작정 해보았다.

먼저 Segmentation fault가 뜨므로 왜 뜨는지를 알기위해 gdb로 분석을 하려고 해보았다.

일단 실행을 해보려고 하니까 _start함수 내부에서 세그먼트 폴트가 뜨면서 멈추는거 같다.

보통 ELF파일은 _start부터 첫루틴이 시작되므로 _start로 점프도 시켜서 루틴을 돌려봐도.. 결과는 같다.
그래서 파일에 대한 정보를 더 모아보기 위해 해당 파일이 어디서 컴파일 됬는지 알아보았다.


이와 같이 해당 파일 덤프를 떠서 test.txt에 저장시키고 test.txt를 vi로 보게되면 깔끔하게 나온다.


내용을 쭉 보던중 haiku라는 OS에서 컴파일이 됬다. 저 OS는 사실.. 처음들어보는 OS이다.
일단 haiku로 환경은 구축해놓고 거기서 실험을 해보아야겠다.

여기서 해당 파일을 받을 수 있다.


SourceForge가 가장 빠를거 같아서 저기서 VM버전을 받았다. ( 192MB 인데 1분 정도 걸린거같다. )
VM버전은 이미 설치가되서 이미지로 떠놨기 때문에 설치없이 바로 VMware에서 사용할 수 있다.

이제 haiku를 켜보자.
쑥스러운 이야기지만 처음 사용해봐서 터미널을 키려고 30초라는 시간을 소모했다...
간단히 바탕화면에서 마우스 우클릭을하면 터미널이 있었다.


이제 터미널을 열었으니 터미널을 열고 해당 파일을 실행시켜보자.


실행은 안되고 하나의 오류창만 떴다. 계속 실행되는 것을 막기위해 오류가 발생했다고 뜨네요.
일단 Debug가 있으니 눌러서 따라보자. 우리는 Debugging을 해야하기 때문~!

ubuntu에서와 달리 pre_init()에서 멈췄습니다. OS가 달라서 그런걸까??...
아무튼 여기서 또 해볼 것은 역시나 _start루틴으로 점프를 시켜서 실행을 하는 것!

일단 우리의 목표는 프로그램을 실행을 시켜야하기 때문이다.
사실... 이렇게 하기전에 IDA로 파일을 열어서 정적분석을 해보려고 했지만.. -.-; 포기...
무언가 출력을 하는데 시간이 걸릴꺼같아서 어떻게든 동적으로 실행을 시켜보려고 했다.

한번 _start로 점프해서 실행을 시켜보자~

그랬더니 URL하나가 툭 튀어나온다. 정상 실행은 됬나보네요...

저 URL로 가보자~!

뭔가 이상한 사이트..같다.
아무튼 해적들은 여기서 무슨 보물을 얻었을까??

답은 " asses of the caribbean " 이다.

'My Study > Crack Me' 카테고리의 다른 글

Codegate 2011 B500 writeup  (12) 2012.01.18
Defcon 2010 예선 바이너리 3번  (0) 2010.06.02
Defcon 2010 예선 바이너리 1번  (8) 2010.05.23
HellBound Application Cracking 15  (0) 2010.04.29
HellBound Application Cracking 2  (2) 2010.04.28