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
no image
CodeEngn(코드엔진) basic 12
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L12 Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? 1. 성공 메시지를 출력하는 부분을 살펴보면 그 위에 7A2896BF와 EAX의 값을 비교하여 일치하지 않으면 성공 메시지를 건너뛰는 부분이 있다. 2. 7A2896BF를 2진수로 변환하면 2049480383이 된다. 3. 파일을 HxD로 연 후 성공 메시지 부분을 확인한다. password는 총 10글자이므로 null ..
2020.06.25
no image
CodeEngn(코드엔진) basic 11
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L11 OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex) 00401000FF35CA204000E84D000000 1. 11.exe 파일의 stolenbyte를 찾는 것은 9번 문제와 과정이 동일하므로 생략한다. Stolenbyte는 6A0068002040006812204000이다. 2020/06/25 - [리버싱] - CodeEngn(코드엔진) basic 09 CodeEngn(코드엔진) basic 09 Basic RCE L09 StolenByte를 구하시오 Ex) 75156A0068352040 stolenbyte란? 프로그램의..
2020.06.25
no image
CodeEngn(코드엔진) basic 10
※ 작년에 작성한 라이트업입니다. ※ Basic RCE L10 OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 1. PEiD를 통해서 10.exe가 aspack으로 패킹이 되어있는 것을 확인할 수 있다. http://blog.naver.com/PostView.nhn?blogId=suljang2&logNo=140201560221&parentCategoryNo=&categoryNo=23&viewDate=&isShowPopularPosts=true&from=search 사이트를 참고해서 언패킹을 진행했다. 2. 10.exe파일을 올리 디버거로 열어보았다. PUSHAD로 시작하는 것을 확인할 수 있다. PUSHAD로 시작..
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

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

 

 

 

Basic RCE L12

Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다
이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다.
문제 : Key값과 + 주소영역을 찾으시오
Ex) 7777777????????

 

 

 

1.     성공 메시지를 출력하는 부분을 살펴보면 그 위에 7A2896BFEAX의 값을 비교하여 일치하지 않으면 성공 메시지를 건너뛰는 부분이 있다.

 

 

2.     7A2896BF2진수로 변환하면 2049480383이 된다.

 

 

3.     파일을 HxD로 연 후 성공 메시지 부분을 확인한다. password는 총 10글자이므로 null 포함 11글자를 수정해야한다. 즉 주소영역은 0D3B~0D45가 된다.

 

728x90

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

CodeEngn(코드엔진) basic 14  (0) 2020.06.25
CodeEngn(코드엔진) basic 13  (0) 2020.06.25
CodeEngn(코드엔진) basic 11  (0) 2020.06.25
CodeEngn(코드엔진) basic 10  (0) 2020.06.25
CodeEngn(코드엔진) basic 09  (0) 2020.06.25

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

 

 

 

Basic RCE L11

OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오
Ex) FF35CA204000E84D000000
정답인증은 OEP+ Stolenbyte 
Ex) 00401000FF35CA204000E84D000000

 

 

 

1.     11.exe 파일의 stolenbyte를 찾는 것은 9번 문제와 과정이 동일하므로 생략한다. Stolenbyte 6A0068002040006812204000이다.

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

 

CodeEngn(코드엔진) basic 09

Basic RCE L09 StolenByte를 구하시오 Ex) 75156A0068352040  stolenbyte란? 프로그램의 한 부분의 코드가 다른 부분으로 옮겨진 것, 정상적으로 프로그램이 동작되지 않음, 패킹된 프로그램에서 볼 수 있음 1. .

assb.tistory.com

      

 

 

2.     OEP는 언패킹을 진행한 파일을 통해서 구해야한다. OEP00401000이다. 따라서 정답은 004010006A0068002040006812204000가 된다.

 

728x90

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

CodeEngn(코드엔진) basic 13  (0) 2020.06.25
CodeEngn(코드엔진) basic 12  (0) 2020.06.25
CodeEngn(코드엔진) basic 10  (0) 2020.06.25
CodeEngn(코드엔진) basic 09  (0) 2020.06.25
CodeEngn(코드엔진) basic 08  (0) 2020.06.25

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

 

 

 

Basic RCE L10

OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오
정답인증은 OEP + OPCODE 
EX) 00400000EB03 

 

 

1.     PEiD를 통해서 10.exeaspack으로 패킹이 되어있는 것을 확인할 수 있다.

http://blog.naver.com/PostView.nhn?blogId=suljang2&logNo=140201560221&parentCategoryNo=&categoryNo=23&viewDate=&isShowPopularPosts=true&from=search 사이트를 참고해서 언패킹을 진행했다.

 

 

2.     10.exe파일을 올리 디버거로 열어보았다. PUSHAD로 시작하는 것을 확인할 수 있다. PUSHAD로 시작하는 것은 aspack으로 패킹된 파일의 특징이다.

 

 

3.     F8을 누른 후 ESP에서 Follow in Dump를 선택한다.

 

 

4.     dump창에서 드래그를 한 후 Breakpoint-Hardware, on access-Dword를 선택한다.

 

 

5.     f9로 실행해주면 JNZ~부분으로 이동하게 된다. 상단의 POPAD가 있다.

 

 

6.     RETN으로 들어가면 하단과 같은 화면이 뜨는데 이는 올리 디버거가 분석을 하지 못했을 때 나타나는 화면이다. 여기서 ctrl+A를 눌러주면 언패킹이 완료된다.

 

 

7.     언패킹이 완료되었다. OEP00445834가 된다. 이제 이제 두번째 문제인 등록 성공으로 가는 분기점의 OPCODE를 찾아야 한다.

 

 

8.     텍스트를 확인해보았다. “Resisterd … well done!”이라고 등록에 성공했을 때 등장하는 문자열이 보인다. 이것을 더블 클릭한다.

 

 

9.     등록 성공 메시지에서 조금 위로 올려보면 점프문이 하나 등장한다. 이 점프문에 걸릴 경우 등록 성공 메시지를 띄우는 부분을 건너뛰게 되므로 이 코드가 등록성공으로 가는 분기점임을 알 수 있다. 이 코드의 OPCODE 7555이므로 이 문제의 정답은 004458347555가 된다.

728x90

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

CodeEngn(코드엔진) basic 12  (0) 2020.06.25
CodeEngn(코드엔진) basic 11  (0) 2020.06.25
CodeEngn(코드엔진) basic 09  (0) 2020.06.25
CodeEngn(코드엔진) basic 08  (0) 2020.06.25
CodeEngn(코드엔진) basic 07  (0) 2020.06.25