대구정보보안컨퍼런스에서 했던 해킹대회 본선 문제풀이이다.
대회를 한지 벌써 1달이 지나가는데.. 풀이를 블로그에 안 올렸었다는 것을 지금 알았다.
근데 한 문제 밖에 풀이가 없다 ㅇㅅㅇ
게다가 풀이도 간단
팀명: 스틸리언입사예정명단.tar.gz
안드로이드 apk가 주어진 문제였다.
푸는 과정은 이러했다. 정석대로 풀면 된다. (오히려 문제 지문 + 힌트로 인해 혼란스러웠었음.)
apk파일에서 classes.dex 파일 추출
-> dex2jar을 이용해 jar로 바꾸기
-> jd-gui로 열어서 소스 확인하기
-> 암호화된 파일 찾기
-> 복호화 (AES)
apk파일을 압축을 풀어보면 classes.dex라는 파일이 있다.
해당 파일을 dex2jar을 이용해서 jar로 바꿔준다.
바꾼 jar 파일을 jd-gui.exe로 연다.
힌트 전부 무시.
어떤 작업들을 하는지 확인하기 위해서
startService(new Intent(this, RecordManager.class));
에 있는 RecordManager.class 로 이동
filez()함수를 보면 FL46.3gp 가 보이며, 플래그와 연관되어 있는 부분임을 알 수 있다.
ERROR라는 이름을 가진 파일을 열어서, 바이트를 가져와서, 디코딩을 해서, FL46.3gp에 저장한다.
디코딩/복호화에 decodeFile()함수를 사용하였으며, 1번째 인자에 key를 2번째 인자에 바이트 배열이 들어감을 알 수 있고, 암복호화방식은 AES/ECB/PKCS5Padding 를 사용하였음을 확인할 수 있다.
따라서 복호화에 사용될 키는 "ABABACADAEAFADAD" 이다.
복호화에 아래 사이트를 사용했다.
https://www.devglan.com/online-tools/aes-encryption-decryption
복호화할 데이터를 base64형태로 받게 했다.
ERROR파일은 apk파일 내에 asset 폴더 안에 있었다.
ERROR파일 내용을 hex값으로 긁어서 아래 사이트에서 base64로 변환했다.
https://www.branah.com/ascii-converter
hex란에서 Remove 0x를 체크한뒤에 붙여넣고, ASCII란에서 Remove spaces로 공백제거
그 다음 base64란에서 값 복사후 복호화 사이트에 붙여넣기.
Key란에 ABABACADAEAFADAD 입력.
복호화.
base64문자열이 나오게 된다. 이를 다시 위 사이트에서 ascii로 바꿔주면 flag가 나온다.
Lifeis4longle55oninhumili7y
'CTF Write Up' 카테고리의 다른 글
UTC-CTF 2019 Teaser write-up (0) | 2019.12.22 |
---|---|
X-MAS CTF 2019 X-MAS Helper write-up (0) | 2019.12.21 |
Timisoara CTF 2019 Quals Write-up (0) | 2019.09.19 |
20회 Hackingcamp CTF MISC [GuessWhat] 풀이 (0) | 2019.08.26 |
20회 Hackingcamp CTF Forensics [흔적을 남기다] 풀이 (1) | 2019.08.25 |