[CodeEngn] Basic RCE L09 문제풀이
2022. 1. 30. 20:07
워게임/CodeEngn
문제 정보 StolenByte를 구하시오 Ex) 75156A0068352040 풀이 힌트 2-1. PUSHAD(PUSHAL) 범용 레지스터의 값을 Stack에 저장 2-2. POPAD(PUSHAL) Stack의 데이터를 범용 레지스터에 저장 2-3. Stolenbyte 안티디버깅 기법으로 일부 코드를 훔쳐서 다른 부분으로 옮긴 것을 말한다. 주로 OEP 주소로 점프하기 전 위치에서 값을 PUSH하는 방식으로 수행된다. 문제 풀이 더보기 3-1. 문제 프로그램을 실행하면 "Hmmmmm, I can't find the file!" 이라는 에러 문구가 출력된다. 해당 구문이 출력되는 부분을 찾아서 에러를 확인해보자. 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, 수동으로 패킹을 풀어보자. 3-2. ..
[CodeEngn] Basic RCE L08 문제풀이
2022. 1. 30. 17:43
워게임/CodeEngn
문제 정보 OEP를 구하시오 Ex) 00400000 풀이 힌트 2-1. OEP OEP란 Original Entry Point를 말한다. 패킹된 파일을 실행할 때 자동적으로 시스템 내부에서 언패킹을 한다. 언패킹이 끝나면 복구한 원본코드를 동작시켜야 하는데 이 원본코드의 Entry Point를 OEP라고 한다. 문제 풀이 더보기 ※ 패킹된 파일을 프로그램을 이용해 언패킹 하는 것과 디버깅을 통해 수동으로 OEP를 확인하는 방법이 존재하지만, 패킹된 파일이 깨져?있는 것 같아 본 문제에서는 자동으로 OEP를 획득하고, 다음 9번 문제에서는 수동으로 푸는 법을 작성했다. 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, UPX 실행파일을 통해 언패킹을 수행한다. 3-2. 언패킹한 파일을 PEiD에 로드..
[CodeEngn] Basic RCE L07 문제풀이
2021. 12. 31. 21:21
워게임/CodeEngn
문제 정보 컴퓨터 C 드라이브의 이름이 CodeEngn 일 경우, 시리얼이 생성될 때 CodeEngn은 어떤 것으로 변경되는가 풀이 힌트 2-1. getvolumeinformationA 문제 풀이 더보기 3-1. 잘못된 시리얼 키를 입력했을 때, 출력되는 에러 "The serial you entered is not correct!" 문자열을 확인한다. 3-2. 해당 에러 메시지를 출력하는 주소를 확인한다. 3-3. 위에서 확인한 주소를 따라가면 [call ] 함수 리턴 값으로 참/거짓을 판별하는 것을 볼 수 있다. 3-4. 해당 함수 호출 전 BP를 걸고 프로그램을 실행한다. 3-5. 시리얼 키로 test를 입력하였고 함수 호출 전 "test", "L2C-57816784-ABEX" 2개의 문자열이 매개변..
[CodeEngn] Basic RCE L06 문제풀이
2021. 12. 30. 22:33
워게임/CodeEngn
문제 정보 Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 004000000PASSWORD 풀이 힌트 2-1. Packing 2-2. OEP 문제 풀이 더보기 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, UPX 실행파일을 통해 언패킹을 수행한다. 3-2. 문자열 참조를 통해 "Wrong Serial!!!" 에러 메시지를 출력하는 주소를 확인한다. 3-3. 주소를 따라가보니 [00401073] 주소에서 호출된 함수 리턴 값으로 참/거짓이 판단되는 것을 확인할 수 있고, 함수 매개변수로 "AD46DFS547"가 전달된다. 3-4. 강력한 직감에 의지하여 "AD46DFS547" 문자열을 시리얼 키로 입력하니 참을 나타내는 문자열이 출력됐다. 3-5. OEP는..
[CodeEngn] Basic RCE L05 문제풀이
2021. 12. 30. 22:16
워게임/CodeEngn
문제 정보 이 프로그램의 등록키는 무엇인가 풀이 힌트 2-1. Packing 2-2. UPX 문제 풀이 더보기 3-1. 잘못된 키를 입력하면 "Wrong Serial, try again!" 이라는 문구를 출력하는 프로그램이다. 3-2. "Wrong Serial, try again!" 문자열의 주소를 확인한다. ※ 프로그램 실행해야만 해당 문자열이 검색된다. 여기에서 패킹을 의심했어야 한다. 3-3. 에러 문구를 출력하는 주소를 따라가면 [call 05.403B2C] 함수 호출 후 결과 메시지를 출력하는 것을 알 수 있다. 3-4. [call 05.403B2C] 함수의 호출 전/후로 BP를 걸어서 확인해보자 3-5. BP를 걸고 프로그램을 재실행해보니 별다른 변화가 없고 BP가 비활성화 되어있다. 3-6...
[CodeEngn] Basic RCE L04 문제풀이
2021. 12. 29. 22:51
워게임/CodeEngn
문제 정보 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 풀이 힌트 2-1. IsDebuggerPresent 문제 풀이 더보기 3-1. 디버거로 프로그램을 실행하면 "디버깅 당함" 이라는 문구를 출력한다. 3-2. 문자열 참조에서도 별다른 수확이 없어 F8로 한줄씩 실행 노가다 후 디버깅 함수를 체크하는 구간을 찾았다. ※ 문자열 참조가 아닌 모듈참조를 통해서도 확인할 수 있었다, 3-3. test eax,eax 구문에서 eax가 0이면 [04.408190] 함수를 실행하고, 0이 아니면 [04.408190] 함수를 실행하게 되는데 별다른 조작없이 eax가 1인 현재 상황에서는 똑같이 "디버깅 당함" 문구를 출력할 것으로 예상되기 때문에 eax를 0..
[CodeEngn] Basic RCE L03 문제풀이
2021. 12. 29. 22:22
워게임/CodeEngn
문제 정보 비주얼베이직에서 스트링 비교함수 이름은? 풀이 힌트 2-1. vbaStrCmp 문제 풀이 더보기 3-1. 문자열 참조를 통해 패스워드를 확인하는 문구와 push를 이용한 특정 문자열을 입력하는 것을 확인할 수 있다. 3-2. push 구문을 따라가면 이후 vbaStrCmp 함수를 호출한다. 해당 함수는 문자열을 비교하는 함수로 확인된다. 3-3. 해당 함수에 BP를 걸고 임의의 패스워드 입력 후 실행 시 "test"와 "2G83G35Hs2" 문자열을 함수 인자로 넘긴다. 3-4. 패스워드 값을 해당 함수의 두번째 인자 값 "2G83G35Hs2"으로 입력하고 프로그램을 재실행해보자. 3-5. (정답) 비주얼베이직에서 스트링 비교함수는 vbaStrCmp이다.
[CodeEngn] Basic RCE L02 문제풀이
2021. 12. 27. 22:19
워게임/CodeEngn
문제 정보 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오. 풀이 힌트 2-1. HxD 에디터 문제 풀이 더보기 3-1. exe 실행파일이 정상적으로 실행되지 않는다. 3-2. HxD 에디터를 이용해 실행파일을 binary로 읽어서 패스워드를 찾을 수 있는지 확인해본다. 3-3. 파일 중간에 "Nope, try agin!", "Yeah, you did it!" 패스워드 검증 결과를 출력해주는 듯한 문자열을 발견했다. 그 뒤에 Crackme#1.JK3FJ2H 라는 알 수 없는 문자열이 있는데 패스워드로 활용할 수 있을 것 같다. 인증 사이트에서 검증을 시도해보자. 3-4. (정답) 인증 사이트에서 여러 문자열 조합을 확인 결과 "JK3FJ2H"가 패스워드..
[CodeEngn] Basic RCE L01 문제풀이
2021. 12. 27. 21:25
워게임/CodeEngn
문제 정보 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 풀이 힌트 2-1. GetDriveTypeA 문제 풀이 더보기 3-1. 문자열 참조 기능을 이용하여 CD-ROM Drive 관련 텍스트를 출력하는 주소를 확인한다. 3-2. [00401024] 주소에서 cmp 구문을 통해 CD-ROM 드라이브를 판별하는 것을 확인한다. 3-3.GetDriveTypeA의 반환 값에 2를 뺀 결과와 ESI에 3을 더한 값을 비교한다. - (GetDriveTypeA 반환 지점) EAX: 3 - (GetDriveTypeA 반환 지점) ESI: 401000 - (CMP 비교 지점) EAX: 1 - (CMP 비교 지점) ESI: 401003 3-4. (정답) ESI(40..