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
no image
CodeEngn(코드엔진) basic 17
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L17 Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) 1. 임의의 한자리 숫자와 주어진 키 값을 넣어서 입력을 해본다. ‘Please Enter More Chars…’라고 뜨면서 제대로 입력되지 않는 것을 확인할 수 있다. 2. 올리 디버거로 연 후 ‘Please Enter More Chars…’가 뜨는 부분을 확인해본다. 3. EAX와 3을 비교하는 부분에 BP를 걸어서 실행시켜본다. 아래 코드를 확인해보면 3보다 작을 경우 문제의 메시지가 뜨면서 제대로 실행이 되지 않게 된다. 또한 이때 ..
2020.06.25
no image
CodeEngn(코드엔진) basic 16
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L16 Name이 CodeEngn일때 Serial을 구하시오 1. 키 값을 비교하는 부분에 BP를 걸고 실행한다. 2. Name은 CodeEngn, password는 임의의 값을 입력한다. 3. EAX와 [EBP-3C]의 값을 비교하도록 되어있다. 따라서 Address->Relative to EBP를 선택해 주소를 EBP 값을 기준으로 뜨도록 선택한다. 4. EBP-3C의 값을 확인한다. E4C60D97임을 확인할 수 있다. 5. 16진수를 10진수로 변환한다. 즉 passoword는 3838184855가 된다.
2020.06.25
no image
CodeEngn(코드엔진) basic 15
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L15 Name이 CodeEngn일때 Serial을 구하시오 1. 키 값을 비교하는 부분에 BP를 걸고 실행한다. 2. Name은 CodeEngn, password는 임의의 값을 입력한다. 3. EAX와 [45B844]에 저장된 값을 비교하므로 우클릭 > Follow in Dump > Memory address를 선택한다. 4. Hex Dump에 적힌 값을 확인한다. 이때 컴퓨터는 Little Endian 방식으로 메모리를 저장하기 때문에 메모리에 저장된 값은 6160이 된다. 5. 값을 10진수로 변환한다. 그 값이 Serial 값이 된다.
2020.06.25
no image
CodeEngn(코드엔진) basic 14
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L14 Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111 1. 14.exe이 upx로 패킹되어 있으므로 언패킹을 진행한다. 2. 키 값을 비교하는 부분에 BP를 걸고 실행한다. 3. Name은 CodeEngn, password는 임의의 값을 입력한다. 4. ESI의 값을 확인한다. 5. ESI의 값을 10진수로 변환한다. 그 값을 password로 입력하면 된다.
2020.06.25
no image
CodeEngn(코드엔진) basic 13
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L13 정답은 무엇인가 1. 13.exe는 c#으로 작성된 프로그램이다. c#으로 작성된 프로그램은 올리 디버거로 열리지 않으니 다른 프로그램을 사용해야 한다. Jetbrains dotPeek을 사용해서 파일을 열었다. 2. Export to Project…를 클릭하여 프로젝트 파일로 변환했다. 3. Main 함수에 ‘Console.Write(str);’을 추가하여 password를 출력했다.
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

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

 

 

 

Basic RCE L17

Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 
힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 
정답인증은 Name MD5 해쉬값(대문자

 

 

 

1.     임의의 한자리 숫자와 주어진 키 값을 넣어서 입력을 해본다. ‘Please Enter More Chars…’라고 뜨면서 제대로 입력되지 않는 것을 확인할 수 있다.

2.     올리 디버거로 연 후 ‘Please Enter More Chars…’가 뜨는 부분을 확인해본다.

 

 

3.     EAX3을 비교하는 부분에 BP를 걸어서 실행시켜본다. 아래 코드를 확인해보면 3보다 작을 경우 문제의 메시지가 뜨면서 제대로 실행이 되지 않게 된다. 또한 이때 EAX의 값을 확인해보면 1임을 확인할 수 있다. , Name의 값이 3글자가 되지 않으면 글자를 더 입력하라고 뜨게 되는 것이다.

 

 

4.     EAX1이어도 돌아갈 수 있도록 하기 위해 CMP EAX,0으로 코드를 변환한다.

 

 

5.     수정한 파일을 저장하기 위해 우클릭->Copy to executable->Selection을 클릭한다.

 

 

6.     우클릭->Save file을 선택한 후 저장한다.

 

 

7.     수정한 파일을 이용해서 임의의 한글자를 무작위로 대입해본다. Name‘F’임을 확인할 수 있다.

 

8.     FMD5 해시값을 구한다. 이것이 이 문제의 정답이 된다.

728x90

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

CodeEngn(코드엔진) basic 19  (0) 2020.06.25
CodeEngn(코드엔진) basic 18  (0) 2020.06.25
CodeEngn(코드엔진) basic 16  (0) 2020.06.25
CodeEngn(코드엔진) basic 15  (0) 2020.06.25
CodeEngn(코드엔진) basic 14  (0) 2020.06.25

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

 

 

 

Basic RCE L16

Name CodeEngn일때 Serial을 구하시오 

 

 

 

1.    키 값을 비교하는 부분에 BP를 걸고 실행한다.

 

 

2.     NameCodeEngn, password는 임의의 값을 입력한다.

 

 

3.     EAX[EBP-3C]의 값을 비교하도록 되어있다. 따라서 Address->Relative to EBP를 선택해 주소를 EBP 값을 기준으로 뜨도록 선택한다.

 

 

4.     EBP-3C의 값을 확인한다. E4C60D97임을 확인할 수 있다.

 

 

5.     16진수를 10진수로 변환한다. passoword3838184855가 된다.

728x90

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

CodeEngn(코드엔진) basic 18  (0) 2020.06.25
CodeEngn(코드엔진) basic 17  (0) 2020.06.25
CodeEngn(코드엔진) basic 15  (0) 2020.06.25
CodeEngn(코드엔진) basic 14  (0) 2020.06.25
CodeEngn(코드엔진) basic 13  (0) 2020.06.25

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

 

 

 

Basic RCE L15

Name CodeEngn일때 Serial을 구하시오 

 

 

 

1.    키 값을 비교하는 부분에 BP를 걸고 실행한다.

 

 

2.     NameCodeEngn, password는 임의의 값을 입력한다.

 

 

3.     EAX[45B844]에 저장된 값을 비교하므로 우클릭 > Follow in Dump > Memory address를 선택한다.

 

 

4.     Hex Dump에 적힌 값을 확인한다. 이때 컴퓨터는 Little Endian 방식으로 메모리를 저장하기 때문에 메모리에 저장된 값은 6160이 된다.

 

 

5.     값을 10진수로 변환한다. 그 값이 Serial 값이 된다.

728x90

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

CodeEngn(코드엔진) basic 17  (0) 2020.06.25
CodeEngn(코드엔진) basic 16  (0) 2020.06.25
CodeEngn(코드엔진) basic 14  (0) 2020.06.25
CodeEngn(코드엔진) basic 13  (0) 2020.06.25
CodeEngn(코드엔진) basic 12  (0) 2020.06.25

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

 

 

 

Basic RCE L14

Name CodeEngn 일때 Serial을 구하시오 
(
이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요
Ex) 11111 

 

 

 

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

 

 

2.     키 값을 비교하는 부분에 BP를 걸고 실행한다.

 

 

3.     NameCodeEngn, password는 임의의 값을 입력한다.

 

 

4.     ESI의 값을 확인한다.

 

 

5.     ESI의 값을 10진수로 변환한다. 그 값을 password로 입력하면 된다.

728x90

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

CodeEngn(코드엔진) basic 16  (0) 2020.06.25
CodeEngn(코드엔진) basic 15  (0) 2020.06.25
CodeEngn(코드엔진) basic 13  (0) 2020.06.25
CodeEngn(코드엔진) basic 12  (0) 2020.06.25
CodeEngn(코드엔진) basic 11  (0) 2020.06.25

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

 

 

 

Basic RCE L13

정답은 무엇인가

 

 

1.     13.exe c#으로 작성된 프로그램이다. c#으로 작성된 프로그램은 올리 디버거로 열리지 않으니 다른 프로그램을 사용해야 한다. Jetbrains dotPeek을 사용해서 파일을 열었다.

 

 

2.     Export to Project…를 클릭하여 프로젝트 파일로 변환했다.

 

 

3.     Main 함수에 ‘Console.Write(str);’을 추가하여 password를 출력했다.

728x90

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

CodeEngn(코드엔진) basic 15  (0) 2020.06.25
CodeEngn(코드엔진) basic 14  (0) 2020.06.25
CodeEngn(코드엔진) basic 12  (0) 2020.06.25
CodeEngn(코드엔진) basic 11  (0) 2020.06.25
CodeEngn(코드엔진) basic 10  (0) 2020.06.25