Exploit-Exercise :: fusion level04 by ORANG.

Posted by ORANG ORANG(오랑)
2015.03.02 14:05 System Hacking/Exploit-Exercise fusion



[2015. 03. 02 ] 수정


타이밍 어택 문제. 이런 유형은 처음이라 신기했다.

소스를 보면 패스워드를 비교하며, 일치할 때와 일치하지 않을 때, 1/400초 정도 차이가 생긴다.

-> 브루트 포싱을 방지하기 위해 넣었다고 한다.(주석)

이 점을 이용하여 시간을 재면, 정확한 패스워드를 찾아낼 수 있음을 이용하면 패스워드 인증을 통과할 수 있다.

한글자씩 패스워드를 넣어주어 시간차이를 통해 찾아냄.



리모트 환경에서 오버플로를 통해 SSP를 우회하는 방법을 찾던 중, 이 자료가 도움이 많이 되었다

http://www.hackerschool.org/Sub_Html/HS_Service/DocuTrans/View_All.html?uid=5


Position Independent Executable(PIE)가 적용된 문제는 처음이라 많이 헤맸다.

PIE에 대한 자료를 많이 찾지는 못하고, 디버깅하며 삽질하던 중 발견한 부분들을 통해 알아낸 부분은..

(이 문제는 알람이 15초로 정해져있어 디버깅하기 매우 힘들다..)


우선 함수의 PLT테이블을 보니, JMP 0x30(%ebx) 이런 식으로 GOT테이블에 접근하도록 되어있었다.

-> GOT의 주소를 알아내려면 ebx 값을 알아야한다.

또, validate_credentials 함수의 에필로그 부분을 보니

   0xb78892af <+351>: add    $0x84c,%esp   

   0xb78892b5 <+357>: pop    %ebx

   0xb78892b6 <+358>: pop    %esi

   0xb78892b7 <+359>: pop    %edi

   0xb78892b8 <+360>: pop    %ebp

   0xb78892b9 <+361>: ret

ret 하기 전에 스택에 존재하는 값(접근 가능한 부분)을 pop ebx함.




문제 소스 보기












level04


level04-2.c


libc-2.13.so


fus_lvl4.py


이 댓글을 비밀 댓글로

Exploit-Exercise :: fusion level03 by ORANG

Posted by ORANG ORANG(오랑)
2014.12.02 03:30 System Hacking/Exploit-Exercise fusion







level03


level03.c


exp_fus3.py


이 댓글을 비밀 댓글로

Exploit-Exercise :: fusion level02 by ORANG

Posted by ORANG ORANG(오랑)
2014.11.05 18:56 System Hacking/Exploit-Exercise fusion








level02


level02.py


이 댓글을 비밀 댓글로

Exploit-Exercise :: fusion level01 by ORANG

Posted by ORANG ORANG(오랑)
2014.11.02 22:21 System Hacking/Exploit-Exercise fusion








p.s. 가젯 모아서 "/bin/sh" 만든 후에 execve 이용해도 될듯함     는 생략



이 댓글을 비밀 댓글로

Exploit-Exercise :: fusion level00 by ORANG

Posted by ORANG ORANG(오랑)
2014.11.02 18:14 System Hacking/Exploit-Exercise fusion




소스를 제대로 안보고 익스플로잇을 짰는데,

뭔가 이상해서 분석결과를보니 fix_path함수에서

strcpy(path, resolved)가 아니라 realpath(path, resolved)에서 메모리 복사가 일어났다.


realpath 함수를 찾던 도중 취약점이 있는 함수라는 글이 많았는데

찾아보니 realpath함수는 상대경로에서 절대경로를 찾아주는? 함수인듯하다.

어쨌든 중요한건, 그 과정에서 realpath(a, b) a에서 b로 복사가 일어난다는것

그리고 앞에 "절대경로"가 붙는다 이문제에선 "/"









이 댓글을 비밀 댓글로