no image
reversing.kr Easy_Keygen
Easy_Keygen Serial이 5B134977135E7D13일 때의 Name을 찾는 것이 문제이다. F7과 F8을 누르다 보면 name을 입력 받는 부분을 찾을 수 있다. 그 곳에 BP를 건 후 name을 입력한다. 그러면 입력한 값이 들어가는 것을 확인할 수 있다. 그 아래에는 루프가 있다. 루프를 살펴보았다. 위의 두 MOV 명령을 통해서 ECX에는 10이, EDX에는 73이 들어간다. 그리고 ECX와 EDX를 xor한 결과가 ECX에 들어간다. 그렇게 루프를 한 번 돌면 위에서 계산한 63이라는 값이 저장된다. 그 다음에는 ECX에는 20이, EDX에는 75가 들어간다. 그리고 xor한 값 55가 63 뒤에 붙어서 6355가 저장된다. 루프는 총 5번을 돌게 되고, 635552794E라는 값이..
2020.06.25
no image
reversing.kr Easy_CrackMe
Easy_CrackMe 파일의 password를 찾아야한다. GetDlgItemTextA라는 입력 받는 API가 존재한다. 그 부분에 BP를 걸고 실행하여 password를 입력한다. 첫번째 CMP이다. [ESP+5]이 61인지 확인한다. 61은 ASCII 코드로 a를 의미한다. Little Endian으로 저장되므로 [ESP+5]는 password의 두번째 글자를 의미한다. 따라서 비밀번호의 두번째 자리는 a가 된다. 비밀번호 두번째 자리에 a를 넣어 다시 진행한다. 그 다음 분기문이다. [ESP+A]와 5y를 비교한다. [ESP+A]는 cd 부분에 해당되며, 비밀번호의 세번째, 네번째 자리를 의미한다. 비밀번호에 a5y를 넣어서 다시 진행한다. 그 다음은 [ESP+10]과 R3versing을 비교한다..
2020.06.25
no image
CodeEngn(코드엔진) advance 04
※ 작년에 작성한 라이트업입니다. ※ Advance RCE L04 Name이 CodeEngn 일때 Serial은 무엇인가 1. 파일을 올리 디버거로 열어서 f8을 누른다. 2. 4011B3~4011C0에서 계속 돌게 된다. 빠져나오기 위해서 loop의 바로 아래인 4011C2에 bp를 걸고 실행시킨다. 3. F8을 눌러보면 코드에 물음표가 뜨면서 실행할 때마다 경고창이 뜨게 된다. Ctrl+A를 눌러준다. 4. 코드가 변한 것을 확인할 수 있다. F8을 계속 눌러서 프로그램 창을 띄우고 name과 serial을 입력한다. 5. 그 상태로 스크롤을 아래로 내리면 문자열을 비교하는 함수와 시리얼 번호를 확인할 수 있다.
2020.06.25
no image
CodeEngn(코드엔진) advance 03
※ 작년에 작성한 라이트업입니다. ※ Advance RCE L03 Name이 CodeEngn일때 Serial은 무엇인가 1. 파일을 올리 디버거로 연다. F8을 누르다 보면 프로그램이 바로 종료되는 것을 확인할 수 있다. 2. 문자열들을 확인한다. Serial과 관련이 있어 보이는 부분을 더블 클릭한다. 3. Cmp를 하는 부분에 bp를 걸어서 f9로 실행한다. Name과 serial을 입력하고 check를 누른다. 4. 스크롤을 아래로 내려보면 1111과 3265754874를 비교하는 함수를 확인할 수 있다. 따라서 시리얼 번호는 3265754874임을 알 수 있다.
2020.06.25
no image
CodeEngn(코드엔진) advance 01
※ 작년에 작성한 라이트업입니다. ※ Advance RCE L01 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오 비슷한 문제 2020/06/25 - [리버싱] - CodeEngn(코드엔진) basic 19 CodeEngn(코드엔진) basic 19 Basic RCE L19 이 프로그램은 몇 밀리세컨드 후에 종료되는가 1. 우클릭>search for>all intermodular calls를 선택해서 모든 명령들을 확인한다. 2. F9를 눌러보면 제대로 실행이 되지 않는데 함수.. assb.tistory.com 1. upx로 패킹이 되어있으므로 언패킹을 진행한다. 2. 이 다음부터는 basic 19번 문제와 비슷하게 풀면 된다. 우선 IsDebugger..
2020.06.25
no image
CodeEngn(코드엔진) basic 20
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L20 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다) 1. 문제는 crackme3.key 파일 아의 데이터를 구하는 것인데 파일이 존재하지 않으므로 20.exe 파일과 동일한 위치에 crackme3.key 파일을 만들어준다. 2. 파일을 읽어오는 부분에 bp를 걸고 실행시켜보면 EAX에 1이라는 값이 들어오는 것을 확인할 수 있다. 3. 이때 아래의 cmp 함수를 보면 12..
2020.06.25
no image
CodeEngn(코드엔진) basic 19
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L19 이 프로그램은 몇 밀리세컨드 후에 종료되는가 1. 우클릭>search for>all intermodular calls를 선택해서 모든 명령들을 확인한다. 2. F9를 눌러보면 제대로 실행이 되지 않는데 함수 목록을 살펴보면 IsDebuggerPresent 함수를 확인할 수 있고, 이 함수 때문에 디버깅이 제대로 되지 않는 것을 확인할 수 있다. 3. TEST EAX, EAX를 CMP EAX, EAX로 고쳐서 IsDebuggerPresent 함수가 제대로 동작하지 못하도록 한다. 4. 디버깅이 이제 제대로 되므로 프로그램의 실행 시간과 관련 있는 함수들을 탐색해본다. timeGetTime 함수는 프로그램의 실행 시간을 구하는 함수이다. 5. t..
2020.06.25
no image
CodeEngn(코드엔진) basic 18
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L18 Name이 CodeEngn일때 Serial은 무엇인가 1. 올리 디버거로 연 후 correct/wrong 메시지를 출력하는 부분으로 이동한다. 2. Wrong 메시지를 출력하는 부분의 위에서 문자열을 비교하는 함수를 호출하는 것을 확인할 수 있다. 이 부분에 BP를 걸고 실행시켜준다. 3. Name은 CodeEngn, Serial은 임의의 값을 입력한다. 4. 입력하고 나면 String2와 String1의 값이 출력된다. 이때 String1의 값은 입력한 값, String2의 값은 Serial 값이 된다.
2020.06.25

Easy_Keygen

 

 

 Serial5B134977135E7D13일 때의 Name을 찾는 것이 문제이다.

 

 

 F7 F8을 누르다 보면 name을 입력 받는 부분을 찾을 수 있다. 그 곳에 BP를 건 후 name을 입력한다.

 

 

 그러면 입력한 값이 들어가는 것을 확인할 수 있다.

 

 

 그 아래에는 루프가 있다. 루프를 살펴보았다.

 

 

 

위의 두 MOV 명령을 통해서 ECX에는 10, EDX에는 73이 들어간다. 그리고 ECX EDXxor한 결과가 ECX에 들어간다.

 

 

 그렇게 루프를 한 번 돌면 위에서 계산한 63이라는 값이 저장된다.

 

  

그 다음에는 ECX에는 20, EDX에는 75가 들어간다. 그리고 xor한 값 5563 뒤에 붙어서 6355가 저장된다.

 

  

 루프는 총 5번을 돌게 되고, 635552794E라는 값이 저장된다.

 

 

 그리고 이 것이 serial이 된다.

 

 

 serial이 만들어지는 방법은 다음과 같다.

 

 

 subinHex 값인 73, 75, 62, 69, 6E를 각각 10, 20, 30, 10, 20 xor한다. 그리고 그 값을 연결한 것이 최종 serial이 된다.

 

 

 5B134977135E7D13 name도 각각 10, 20, 30xor한 후, Hex 코드를 ASCII로 변환하면 알 수 있다. xor을 진행하면 4B337967336E6D33이라는 결과가 나온다. 이것을 바꾸면 K3yg3nm3 된다.

 

728x90

'CTF > 리버싱' 카테고리의 다른 글

picoCTF 2018 learn gdb  (0) 2020.06.25
CTFLearn PIN  (0) 2020.06.25
reversing.kr Easy_CrackMe  (0) 2020.06.25
CodeEngn(코드엔진) advance 04  (0) 2020.06.25
CodeEngn(코드엔진) advance 03  (0) 2020.06.25

Easy_CrackMe

 

 

 

 파일의 password를 찾아야한다.

 

 

 GetDlgItemTextA라는 입력 받는 API가 존재한다.

 

 

 그 부분에 BP를 걸고 실행하여 password를 입력한다.

 

 

 첫번째 CMP이다. [ESP+5]61인지 확인한다. 61ASCII 코드로 a를 의미한다. Little Endian으로 저장되므로 [ESP+5]password의 두번째 글자를 의미한다. 따라서 비밀번호의 두번째 자리는 a가 된다.

 

 

 비밀번호 두번째 자리에 a를 넣어 다시 진행한다.

 

 

 그 다음 분기문이다. [ESP+A]5y를 비교한다. [ESP+A]cd 부분에 해당되며, 비밀번호의 세번째, 네번째 자리를 의미한다.

 

 

 비밀번호에 a5y를 넣어서 다시 진행한다.

 

 

  그 다음은 [ESP+10] R3versing을 비교한다. 따라서 비밀번호는 _a5yR3versing이 된다.

 

 

 비밀번호에 1a5yR3versing을 넣어서 다시 진행한다.

 

 

 마지막 분기이다. [ESP+4]45를 비교한다. [ESP+4]는 비밀번호 첫번째 자리를 의미하고 45E를 의미한다. 따라서 최종적으로 password Ea5yR3versing이 된다.

 

 

728x90

'CTF > 리버싱' 카테고리의 다른 글

CTFLearn PIN  (0) 2020.06.25
reversing.kr Easy_Keygen  (0) 2020.06.25
CodeEngn(코드엔진) advance 04  (0) 2020.06.25
CodeEngn(코드엔진) advance 03  (0) 2020.06.25
CodeEngn(코드엔진) advance 01  (0) 2020.06.25

※ 작년에 작성한 라이트업입니다. ※ 

 

 

 

Advance RCE L04

Name CodeEngn 일때 Serial은 무엇인가 

 

 

 

1.     파일을 올리 디버거로 열어서 f8을 누른다.

 

 

2.     4011B3~4011C0에서 계속 돌게 된다. 빠져나오기 위해서 loop의 바로 아래인 4011C2bp를 걸고 실행시킨다.

 

 

3.     F8을 눌러보면 코드에 물음표가 뜨면서 실행할 때마다 경고창이 뜨게 된다. Ctrl+A를 눌러준다.

 

 

4.     코드가 변한 것을 확인할 수 있다. F8을 계속 눌러서 프로그램 창을 띄우고 nameserial을 입력한다.

 

 

5.     그 상태로 스크롤을 아래로 내리면 문자열을 비교하는 함수와 시리얼 번호를 확인할 수 있다.

 

728x90

'CTF > 리버싱' 카테고리의 다른 글

reversing.kr Easy_Keygen  (0) 2020.06.25
reversing.kr Easy_CrackMe  (0) 2020.06.25
CodeEngn(코드엔진) advance 03  (0) 2020.06.25
CodeEngn(코드엔진) advance 01  (0) 2020.06.25
CodeEngn(코드엔진) basic 20  (0) 2020.06.25

※ 작년에 작성한 라이트업입니다. ※ 

 

 

 

Advance RCE L03

Name CodeEngn일때 Serial은 무엇인가 

 

 

 

1.     파일을 올리 디버거로 연다. F8을 누르다 보면 프로그램이 바로 종료되는 것을 확인할 수 있다.

 

 

2.     문자열들을 확인한다. Serial과 관련이 있어 보이는 부분을 더블 클릭한다.

 

 

3.     Cmp를 하는 부분에 bp를 걸어서 f9로 실행한다. Nameserial을 입력하고 check를 누른다.

 

 

4.     스크롤을 아래로 내려보면 11113265754874를 비교하는 함수를 확인할 수 있다. 따라서 시리얼 번호는 3265754874임을 알 수 있다.

728x90

'CTF > 리버싱' 카테고리의 다른 글

reversing.kr Easy_CrackMe  (0) 2020.06.25
CodeEngn(코드엔진) advance 04  (0) 2020.06.25
CodeEngn(코드엔진) advance 01  (0) 2020.06.25
CodeEngn(코드엔진) basic 20  (0) 2020.06.25
CodeEngn(코드엔진) basic 19  (0) 2020.06.25

※ 작년에 작성한 라이트업입니다. ※ 

 

 

 

Advance RCE L01

이 프로그램은 몇 밀리세컨드 후에 종료 되는가 
정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오 

 

 

비슷한 문제

2020/06/25 - [리버싱] - CodeEngn(코드엔진) basic 19

 

CodeEngn(코드엔진) basic 19

Basic RCE L19 이 프로그램은 몇 밀리세컨드 후에 종료되는가 1.    우클릭>search for>all intermodular calls를 선택해서 모든 명령들을 확인한다. 2.    F9를 눌러보면 제대로 실행이 되지 않는데 함수..

assb.tistory.com

 

1.     upx로 패킹이 되어있으므로 언패킹을 진행한다.

 

 

2.     이 다음부터는 basic 19번 문제와 비슷하게 풀면 된다. 우선 IsDebuggerPresent 함수로 이동한다.

 

 

3.     TEST EAX, EAX CMP EAX, EAX로 고쳐서 IsDebuggerPresent 함수가 제대로 동작하지 못하도록 한다.

 

 

4.     timeGetTime 함수에 모두 BP를 걸어준다.

 

 

5.     CALL EDI를 더블 클릭한다.

 

 

6.     우클릭>Follow in Dump>Memory address를 클릭한다. 7B 33, 337B(10진수로 13179)가 이 프로그램의 실행 시간이 된다.

 

 

7.     13179MD5로 암호화한다. DB59260CCE0B871C7B2BB780EEE305DB가 정답이 된다.

728x90

'CTF > 리버싱' 카테고리의 다른 글

CodeEngn(코드엔진) advance 04  (0) 2020.06.25
CodeEngn(코드엔진) advance 03  (0) 2020.06.25
CodeEngn(코드엔진) basic 20  (0) 2020.06.25
CodeEngn(코드엔진) basic 19  (0) 2020.06.25
CodeEngn(코드엔진) basic 18  (0) 2020.06.25

※ 작년에 작성한 라이트업입니다. ※ 

 

 

 

Basic RCE L20

이 프로그램은 Key파일을 필요로 하는 프로그램이다
'Cracked by: CodeEngn!'
문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 
Ex) 41424344454647 
(
정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다

 

 

 

1.     문제는 crackme3.key 파일 아의 데이터를 구하는 것인데 파일이 존재하지 않으므로 20.exe 파일과 동일한 위치에 crackme3.key 파일을 만들어준다.

 

 

2.     파일을 읽어오는 부분에 bp를 걸고 실행시켜보면 EAX1이라는 값이 들어오는 것을 확인할 수 있다.

 

 

3.     이때 아래의 cmp 함수를 보면 12가 되어야 하고 16진수 1210진수 18이 되므로 파일 안에 18자리의 글자를 입력한다.

 

 

4.     다시 파일을 읽는 부분까지 실행해보면 12라는 값이 들어오는 것을 확인할 수 있다.

728x90

'CTF > 리버싱' 카테고리의 다른 글

CodeEngn(코드엔진) advance 03  (0) 2020.06.25
CodeEngn(코드엔진) advance 01  (0) 2020.06.25
CodeEngn(코드엔진) basic 19  (0) 2020.06.25
CodeEngn(코드엔진) basic 18  (0) 2020.06.25
CodeEngn(코드엔진) basic 17  (0) 2020.06.25

※ 작년에 작성한 라이트업입니다. ※ 

 

 

 

Basic RCE L19

이 프로그램은 몇 밀리세컨드 후에 종료되는가 

 

 

1.     우클릭>search for>all intermodular calls를 선택해서 모든 명령들을 확인한다.

 

 

2.     F9를 눌러보면 제대로 실행이 되지 않는데 함수 목록을 살펴보면 IsDebuggerPresent 함수를 확인할 수 있고, 이 함수 때문에 디버깅이 제대로 되지 않는 것을 확인할 수 있다.

 

 

3.     TEST EAX, EAX CMP EAX, EAX로 고쳐서 IsDebuggerPresent 함수가 제대로 동작하지 못하도록 한다. 

 

 

4.     디버깅이 이제 제대로 되므로 프로그램의 실행 시간과 관련 있는 함수들을 탐색해본다. timeGetTime 함수는 프로그램의 실행 시간을 구하는 함수이다.

 

 

5.     timeGetTime 함수에 모두 BP를 걸어준다.

 

 

6.     Disassembly 부분을 살펴보면 CALL EDI만 다른 값을 갖는 것을 확인할 수 있다. 이것을 더블 클릭한다.

 

 

7.     F8로 하나씩 실행하다 보면 이 부분을 반복하는 것을 볼 수 있다. 이 부분이 프로그램의 실행 시간과 관련이 있는 부분이다.

 

 

8.     0044D3A까지 내려가면 CMP 명령어를 볼 수 있다.

 

 

9.     우클릭>Follow in Dump>Memory address를 클릭한다.

 

 

10.  70 2B라는 값을 확인할 수 있다. 이 값을 10진수로 변환하면 11120이라는 값을 얻을 수 있다. 이 값이 프로그램의 실행 시간이 된다.

 

728x90

'CTF > 리버싱' 카테고리의 다른 글

CodeEngn(코드엔진) advance 01  (0) 2020.06.25
CodeEngn(코드엔진) basic 20  (0) 2020.06.25
CodeEngn(코드엔진) basic 18  (0) 2020.06.25
CodeEngn(코드엔진) basic 17  (0) 2020.06.25
CodeEngn(코드엔진) basic 16  (0) 2020.06.25

※ 작년에 작성한 라이트업입니다. ※ 

 

 

 

Basic RCE L18

Name CodeEngn일때 Serial은 무엇인가 

 

 

 

1.    올리 디버거로 연 후 correct/wrong 메시지를 출력하는 부분으로 이동한다.

 

 

2.     Wrong 메시지를 출력하는 부분의 위에서 문자열을 비교하는 함수를 호출하는 것을 확인할 수 있다. 이 부분에 BP를 걸고 실행시켜준다.

 

 

3.     NameCodeEngn, Serial은 임의의 값을 입력한다.

 

 

4.     입력하고 나면 String2String1의 값이 출력된다. 이때 String1의 값은 입력한 값, String2의 값은 Serial 값이 된다.

 

728x90

'CTF > 리버싱' 카테고리의 다른 글

CodeEngn(코드엔진) basic 20  (0) 2020.06.25
CodeEngn(코드엔진) basic 19  (0) 2020.06.25
CodeEngn(코드엔진) basic 17  (0) 2020.06.25
CodeEngn(코드엔진) basic 16  (0) 2020.06.25
CodeEngn(코드엔진) basic 15  (0) 2020.06.25