본문 바로가기

CTF/Write-up

Insomni’hack 2012 InsomniDroid CrackMe

AndroidManifest.xml를 확인해보면 InsomniActivity가 보인다.


클래스는 3개뿐이다.


버튼 하나와 입력창과 텍스트가 있을 것이다.


해당 앱을 실행하면 이렇게 생겼다.


우선 a클래스를 보면 입력한 값을 가져와서 true가 되면 Congrats! 문자가 나오는것이다.


바이트 배열이 보이는데 패스하고 아래의 소스를 보자!


b클래스를 보면 AES암호화 SHA-256이 보이는데

내가 입력한 값을 SHA-256 암호화하고 그 값이 바이트 배열 b와 같으면 리턴값으로 true를 준다.


a배열은 그냥 fake이다.


b배열은 sha256인데 해당 값이 최종 비교할 값이다.

6152587ede8a26f53fd391b055d4de501ee8b2497fe74f8fd69f2c72e2f3e37a


c배열과 d배열은 AES암호 CTR모드에 사용된다.

CTR모드는 카운터를 암호화한 비트열과 평문블록을 XOR한다.

소스 코드를 작성해보면


1
2
3
4
5
6
7
8
9
= [-2052392915-1056478-11-2392-94-213-12433]
 
= [-819173122125-105261-44-5524-51-112121-9283-1192582110106-73111-90-5531-10-8445-2578-1039083120125-2896117-36-5515-57-99127-3185-5211972121106-734161-49-55110-49-107107-2373-347023117100-104343-86-124109-112-5157-7923]
 
result = ""
for x in range(len(d)):
    result += (chr(c[x%len(c)]^d[x])).strip()
 
print result
cs

이런식으로 작성할 수 있다.


1
Congrats!Dontre-useAESCTRcounters;)SecretCodeis:2mkfmh2r0hkake_m123456
cs

이 값을 다시 sha-256해보면 b배열과 같다는 것을 알 수 있다.


성공

'CTF > Write-up' 카테고리의 다른 글

pragyan ctf MI6  (0) 2017.03.03
Hashdays 2012 Android Challenge  (0) 2017.02.26
BSidesSF-pinlock  (0) 2017.02.20
BSidesSF Reversing  (0) 2017.02.14
codegate 2017 angrybird  (2) 2017.02.11