Wargame/CodeEngn 20

CodeEngn Basic RCE L10

문제 OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 10.exe를 ollydbg에 올려보니 위와 같은 메시지가 떴다. 아마 파일이 수정되어 OEP가 코드 바깥에 있어서 실행이 제대로 안 되는 것 같다. 일단 실행을 시켜보니 PUSHAD가 있었다. CTRL + F로 command 검색을 해보니 POPAD도 존재했다. 이를 바탕으로 패킹이 되어 있다는 것을 알아낼 수 있었다. UPX로 패킹 된 게 아니라, 어떤 걸로 패킹되었는지 알아보기 위해 PEiD에 넣어보았다. 넣어보았더니 ASPack으로 패킹되어 있는 것을 확인할 수 있었다. ASPack 언패킹을 수행하기 위해 찾아보던 중, 아래의 글을 발견하였다. duwjd..

Wargame/CodeEngn 2021.05.10

CodeEngn Basic RCE L09

문제 StolenByte를 구하시오. Ex) 75156A0068352040 09.exe도 UPX로 패킹되어 있다. 언패킹 해주자. 언패킹 했으니까 Ollydbg로 실행시켜보자. Ollydbg로 열어보면 처음엔 Nop sled가 있고, 003010A5부터 끝까지는 DB 00으로 채워져있다. 이때 문제에서 묻는 StolenByte다 Nop sled의 영역인가 싶어서 90을 입력해보았다. 음. 역시 아니었다 ^^! 이렇게 푸는 문제가 아닌 것 같아서, 일단 한 줄씩 실행시켜 보았다. 실행시키다 보니 MessageBoxA에서 호출되는 함수에서는 인자가 총 4개가 필요한데, 0040100E에 있는 MessageBoxA에서는 PUSH가 하나만 이루어지는 것을 볼 수 있었다. 이것 때문에 제일 처음 출력되는 메시지 ..

Wargame/CodeEngn 2021.05.10

CodeEngn Basic RCE L07

문제 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가? 컴퓨터 C 드라이브 이름이 CodeEngn일 경우이니까, 컴퓨터 C 드라이브 이름을 바꿔주자. 그런 다음 07.exe 파일을 ollydbg로 실행시킨 후, 문자열을 뽑아보았다. 4562-ABEX와 L2C-5781 둘 다 시리얼 넘버로 보이니까 둘 다에 breakpoint를 걸어보자. 우선 4562-ABEX를 넣어주었다. 실행을 해보니, 노란색 형광펜 쳐진 어셈블리어를 통해서 CodeEngn 문자열이 EqfgEngn으로 바뀌게 되었다. 그런 다음 004010FC(클릭한 부분)에서 CMP를 통해 비교를 하고 그 다음 JE를 통해 성공 구문 혹은 에러 구문으로 점프를 하는 것으로 추측된다...

Wargame/CodeEngn 2021.05.10

CodeEngn Basic RCE L06

문제 Unpack을 한 후 Serial을 찾으시오. (정답인증은 OEP + Serial) UPX로 패킹되어 있으니 풀어주자. 언패킹 후 Ollydbg로 열어보았다. OEP가 00401360임을 알 수 있다. Serial Key를 찾아보자. 오른쪽 마우스 - Search for - All referenced text strings를 통해 문자열을 모두 뽑아보았다. Good Job이라는 성공 구문위에 AD46DFS547이라는 게 있는 것을 볼 수 있다. 이를 Serial 키로 의심해볼 수 있다. 해당 주소로 가서 breakpoint를 걸고 확인해보자. 실행된 프로그램에 1111111이라는 임의 값을 넣어보았다. 입력한 '1111111'값과 'AD46DFS547'이 스택에 들어가는 것을 볼 수 있다. 그런 다..

Wargame/CodeEngn 2021.05.09

CodeEngn Basic RCE L05

문제 이 프로그램의 등록키는 무엇인가. 05.exe를 ollydbg에 돌리면 위와 같은 메시지 창이 뜬다. F9를 통해 실행시키면 아래와 같은 프로그램이 뜨게 된다. 여기서 뭘 더 해야할 지 모르겠어서 PEView로 열어보았다. PEView로 열어보니 UPX0과 UPX1이라고 되어 있는 부분이 있었고, 이를 보고 UPX로 패킹되어 있음을 의심해 보았다. PEiD로 돌려보니 UPX로 패킹되어 있는 것을 볼 수 있었고, 따라서 05.exe를 언패킹 해보았다. 언패킹을 수행한 후 PEView로 열어보았다. PEView로 연 후 05.exe의 SECTION CODE 부분에서 cracked successfully Congrats! 라는 메시지를 찾았고, 그 위에 시리얼 키가 있었다. 이를 입력하니 문제가 풀렸다...

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L04

문제 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가. 04.exe 파일을 ollydbg로 열어보았다. F9로 실행을 시키니, 디버깅 당함이라는 메시지가 콘솔창에 출력되었다. 그럼 디버깅 당함이 뜨기 전에 디버거를 탐지하는 함수가 있을 것이다. '디버깅 당함' 문자열이 출력되는 주소는 00408454이다. 이때 명령어는 CALL 04.0040100F로, 0040100F 주소에 있는 함수를 호출한다는 뜻이다. 그래서 0040100F 주소로 이동해보았다. 0040100F에서는 다시 00401030으로 JUMP 된다. 00401030으로 가보니 명령어들이 있는 것을 볼 수 있었고, 0040105E에서 IsDebuggerPresent라는 함수가 있는 것을 볼..

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L03

문제 비주얼베이직에서 스트링 비교함수 이름은? 03.exe를 ollydbg로 돌려보려고 하니, dll이 없어서 코드 실행을 진행할 수 없다는 메시지 창이 떴다. 그래서 ollydbg로 보는 건 포기하고, 스트링 비교함수를 찾는 거니까 정적 분석 도구 중 하나인 Strings를 사용해서 문자열을 추출해 보았다. 다운로드 링크 : docs.microsoft.com/ko-kr/sysinternals/downloads/strings 내려서 확인해보던 중에 VBA5.DLL 하위에 vbaStrCmp가 있는 것을 볼 수 있었고, 이를 입력하니 문제가 풀렸다.

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L02

문제 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오 02.exe 파일을 ollydbg에 넣어보았는데 Error와 함께 파일을 읽을 수 없었다. 혹시 64비트에서 제작된 프로그램이라 실행이 안 되는 건가 싶어서 ollydbg 설정을 추가로 해주었지만, 그래도 exe 파일이 열리지 않았다. 그래서 exe 파일이 아닌 건가 하는 생각에 HxD로 까보았다. HxD로 까보았는데 exe 파일 헤더를 가지고 있길래 뭔가 했더니 문제에서 애초에 실행파일이 손상되어서 실행이 안 된다고 되어 있었다. . . ^^ . . . HxD로 파일을 보던 중에, 패스워드랑 관련되어 있는 것 같은 부분을 찾게 되었다. Addialog를 보니 특정 창을 띄우는 코드? 인 것 같고 실..

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L01

문제 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea GetDriveTypeA function (fileapi.h) - Win32 apps Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive. docs.microsoft.com Microsoft 공식 문서에 따르면, GetDriveTypeA 함수의 리턴값에 대한 설명은 다음과 같다. 문제에서 묻고 있는 HDD를 CD-Rom으로 인식시키기 위한 GetDriveTy..

Wargame/CodeEngn 2021.05.01