문제입니다.

"09.exe"를 실행한 화면입니다.

패킹여부를 확인해보겠습니다.

UPX로 패킹이 되어있네요 ~

이제 언패킹을 해보겠습니다.

"09_unpack.exe"라는 이름으로 언패킹 파일을 생성했습니다.

파일을 실행해보겠습니다.

오류가 뜨네요...

또한 peid에서는 찾을수가 없다네요 ~

일단 언패킹 된 파일을 올리디버거로 분석을 해보겠습니다.

아무작업도 하지 않는 NOP코드가 보이네요

우선 StolenByte이 무엇인지 살펴보면 아래와 같은 내용을 확인할 수 있습니다.

[출처] https://t3rr3t.tistory.com/13

첫번째 call을 보면 메시지 박스는 인자가 4개인데 1개를 PUSH하고 call을 하고 있네요

그렇다는 말은 인자 3개가 누락이 된 것이며 이는 OEP코드로 넘어오기 전에 PUSH가 되었다는 것을 의미합니다.

원본파일인 "09.exe"파일로 OEP코드로 가기전 상황을 살펴보겠습니다.

4개를 PUSH하고 jmp하는 것을 볼수 있습니다.

JMP를 하고 현재 위치에서 스택상황을 보겠습니다.

인자 4개가 들어가있네요

그럼 "09_unpack.exe"파일에서 현재 상태를 비교해보면

쓰레기 값이 들어간 것을 확인할 수 있습니다.

NOP코드에 이 쓰레기 값 부분을 정상 값으로 PUSH하면 될 복구가 가능할 것 같습니다.

이와 같이 수정했습니다.

이후 dump를 떠서 실행해보면!

메시지가 정상 복구된 것을 확인할 수 있습니다.

이제 진짜 문제를 풀어보겠습니다.

CreateFileA라는 함수가 보이는데 파일을 생성하는 것 같습니다.

MSDN으로 살펴보면!

lpFileName : 만들거나 열 파일 또는 장치의 이름입니다.

dwDesiredAccess : 파일 또는 장치에 대한 요청 된 액세스 (읽기, 쓰기 또는 둘 다 또는 둘 다로 요약 될 수 없음)

dwShareMode : 파일, 장치의 요청 된 공유 모드. 읽기, 쓰기, 둘 다, 삭제, 모두 또는 없음

lpSecurityAttributes : 별개의 두 개의 관련 데이터 멤버 (선택적 보안 설명자)와 리턴 된 핸들을 하위 프로세스가 상속 할 수 있는지 여부를 판별하는 부울 값을 포함 하는 SECURITY_ATTRIBUTES 구조에 대한 포인터 입니다.

dwCreationDisposition: 존재하거나 존재하지 않는 파일 또는 장치에 대해 수행 할 조치입니다.

dwFlagsAndAttributes : 파일 또는 장치 속성 및 플래그 ( FILE_ATTRIBUTE_NORMAL 이 파일의 가장 일반적인 기본값 임)

hTemplateFile : GENERIC_READ 액세스 권한 이있는 템플리트 파일에 대한 유효한 핸들 템플리트 파일은 작성중인 파일의 파일 속성 및 확장 된 속성을 제공합니다.

종합적으로 위 함수의 설정을 살펴보면 읽기모드로 설정되어 있고

FileName 부분의 설명을 보면 "abex.l2c"라는 파일을 열도록 되어있습니다.

그럼 이 "abex.l2c"파일을 생성해주면 되겠습니다.

문구가 바뀌었습니다.

그 다음 분기문을 살펴보면

GetFileSize함수를 통해 파일 사이즈를 구하고 그결과를 CMP EAX,12 부분에서 비교를 하고 있습니다.

그리고 0x12와 동일하면 성공, 아니면 실패 문구를 출력하게 되어있습니다.

0x12는 10진수 18이므로 파일사이즈를 18로 만들어주면 되겠습니다.

영문자는 1문자당 1byte크기를 가지므로 18개의 'a'를 사용하여 18byte를 만들었습니다.

그리고 파일을 다시 실행해보면 !

성공문구를 확인할 수 있습니다.

여기서 문제는 StolenByte를 찾는 것이므로

파란네모박스 친 부분이 StolenByte입니다.

쭉 연결하면!

"6A0068002040006812204000"

Basic RCE L09 성공!

'WAR GAME > CodeEngn(Basic)' 카테고리의 다른 글

Basic RCE L11  (2) 2020.04.29
Basic RCE L10  (2) 2020.04.29
Basic RCE L08  (2) 2020.04.29
Basic RCE L07  (2) 2020.04.29
Basic RCE L06  (2) 2020.04.29

+ Recent posts