티스토리 뷰

CTF/Reversing

CODEGATE 2013 - Binary 100

Notchicken 2017. 5. 30. 10:50
CODEGATE 2013 - Binary 100


주어진 exe 파일을 실행하면 doorlock이 뜨고, 임의의 수를 입력하면 "sorry, try again" 이라는 메시지 박스가 뜬다.


해당 exe를 .Net Reflector로 디컴파일하여 분석하다보면, 아래와 같은 코드를 볼 수 있다.


data.length가 0x10 이면, AES 암호화를 한 후 XOR 연산하여 this.lowkey와 비교를 한다.
data.length에 맞게 16(0x10)자리 숫자를 입력하면 조건문 두개를 만날 수 있는데
입력한 값이 조건에 만족한다면 this.c를 XOR 연산하고 AES Decrypt한 값을 메시지 박스에 띄워주는게 이것이 키값이 된다.
하지만, 조건에 만족하지 않으면 this.d를 XOR 연산하고 AES Decrypt한 값을 메시지 박스에 띄워준다.
(이 값이 아마도 Preliminary Math? 인것 같다.)


처음엔 Decrypt 과정을 직접 코딩해야 하나 생각했지만, this.d 값을 this.c 값으로 바꿔주면 키값을 띄우는 조건을 만족하지 않아도 키값이 뜨지 않을까 생각하게 되었다.

먼저, IDA를 이용해 this.d의 헥스값을 찾아보았다.


this.d의 hex값 : 7B 08 00 00 04

그리고나서 this.c의 헥스값도 찾아보았다.


this.c의 hex값 : 7B 07 00 00 04

HXD를 이용해 this.d (7B 08 00 00 04)를 this.c (7B 07 00 00 04) 로 바꿔보았다.


값을 바꿔 저장한 후 다시 실행하여 임의의 숫자 16자리를 넣었더니 키값을 볼 수 있었다.



key : code9ate2013 Start



'CTF > Reversing' 카테고리의 다른 글

[Reversing.kr] Easy Keygen  (0) 2020.03.27
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday