본문으로 바로가기

[PoliCTF 2015] Crack Me If You Can

category CTF/Hacking Defense Contest 2015. 7. 13. 14:50



사용 Tools

JAD : http://varaneckas.com/jad/

Eclipse : http://www.eclipse.org/home/index.php

AVD : http://developer.android.com/sdk/download.html?v=android-sdk_r05-windows.zip 

NetBeans : https://netbeans.org/

Apk-sign : 

apk-sign.zip

Jd-gui : http://jd.benow.ca/

apktool : http://ibotpeaches.github.io/Apktool/


파일을 다운로드 후 GPG를 이용하여 암호화 해제

(gpg --decrypt-file 파일이름)

파일을 확인해 보면 apk파일인 것을 확인할 수 있다.

apk 파일은 decompiler를 이용하여 java 코드로 확인할 수 있지만 우리는 안드로이드 debugging 환경을 만들어 진행하였다.

debugging 환경을 만들기 위하여 AVD를 이용하여 가상 이미지 생성 (android 4.1.2 APIv16)


apk파일 설치 후 프로그램을 debugging하기 위하여 apktool을 이용하여 압축 해제 후 다시 압축

압축 해제 : apktool.bat d -d [apk파일 이름]


Debugging 가능 하도록 압축 : apktool.bat b -d [압축 해제 폴더]

재 압축을 하면 "압축 해제 폴더\dist\" apk 파일이 생성된 것을 확인할 수 있다.

이 파일을 OS에 설치하기 위하여 apk-sign을 이용하여 서명


서명을 완료 후 adb를 이용하여 OS에 프로그램 설치


설치가 정상적으로 됐는지 확인


Debugging을 하기 위하여 Eclipse에서 DDMS를 이용하여 포트 확인

NetBeans를 이용하여 debugger 연결

NetBeans -> New project -> java project with existing sources -> project forder : 압축 해제 폴더 -> source package folder : 압축 해제 폴더

프로젝트가 열린 후 liblaries 우 클릭 -> add jar/folder -> %userprofile%\appdata\local\android\sdk\platforms\android-16\android.jar추가

debug->attach debugger -> JPDA, HOST : 127.0.0.1, port : 확인 포트 추가


Debugger 연결 후 eclipse에서 연결 확인(무당벌래 모양)


연결된 상태에서 일시정지 후 코드 확인

Debugger상에서는 코드 확인이 어렵기 때문에 jd-gui를 이용하여 java코드로 확인하였다.


loginactivity파일을 살펴보면 함수에서 같은지 비교하는 부분을 확인 가능

마지막으로 호출하는 함수는 c.a이기 때문에 debugger로 돌아가 c파일에서 return 부분에 ctrl+F8을 이용하여 break point 설정 후 continue


프로그램이 실행되면 값 입력 후 sign in 클릭

변수를 확인하면 flag 확인 가능