본문 바로가기

CodeEngn RCE

codeengn Basic RCE 2 풀이

  • 문제


Codeengn Basic RCE 2 문제

실행 파일이 손상되었다고 했고, 실제로도 실행이 안 되는 파일이다.

이 파일을 가지고 유추해 볼 수 있는 방법은

  1. 패스워드가 Static으로 저장되어있다면, 파일 내에 어디인가 저장이 되어 있을 것
  2. 패스워드가 알고리즘으로 인증되는 것이라면, 파일 내에 알고리즘 소스가 저장되어 있을 것
  3. 패스워드가 네트워크를 타고 인증 받는 것이라면 인증서버의 주소가 파일 내에 있을 것
  4. 기타,, 여러 가지 다른 방법

문제에서 주어진 단서가 얼마 없기 때문에 유추한 모든 방법을 다 시도해 보기로 했다.

나는 이 중 1번에서 답을 찾을 수 있었다.

 

  • 1번 방법의 자세한 설명

Windows 실행 파일은 PE 라는 구조로 되어있다. 이 PE를 전부 설명하자면 너무 길어짐으로 생략한다.(주로 정석에서나 봤을 말투를 내가 사용하다니..)

PE구조 중 IMAGE_SECTION_HEADER 안의 .data Section 이 Static으로 설정 된, 즉, 컴파일 하기 전부터 소스 내에 이미 선언된 정적 변수들을 저장하는 곳이다. .data 섹션의 자세한 설명을 하자면,

1. .data 섹션

- .data섹션은 그 속성이 읽기/쓰기 가능한 가장 일반적인 데이터 섹션이다. 여러분들이 전역변수나 정적 변수를 선언하게 되면 이러한 변수들은 모두 이 .data 섹션에 위치하게 된다. .data 섹션이 프로세스 주소 공간에 매핑되게 되면 이 섹션 내의 번지 값 그대로 사용된다. 지역 변수는 프로세스 스택에 그 영역이 할당되기 때문에 PE와는 관계가 없다는 것을 염두에 두기 바랍니다. .data 섹션은 앞서 언급한대로 특별한 구조가 없이 컴파일러가 판단하여 적당한 크기를 잡고 그 섹션 내에 여러분이 정의한 전역/정적 변수들을 위치시킨다.
출처 : http://sol9501.blog.me/70102511201

이렇게 된다.


문제파일을 WinHex 로 연 것

여기까지 손상되었는지는 알 수 없다. 단지 힌트를 얻을 수는 있다. 손상이 되지 않았다는 가정하에, Section은 IMAGE_SECTION_HEADER에 나열된 순서대로 파일 내에 위치한다. 그리고 SectionAlignment 와 FileAlignment 의 규칙에 따라서 각 세션 사이에는 공백( 0x00 으로 쭉 나열된 것)이 생기게 된다. 여기서는 .data 섹션이 3번째 이므로, 3번째 섹션을 찾아가면 여러 가지 문자열을 볼 수 있고, 그 중에 패스워드를 찾을 수 있다.

'CodeEngn RCE' 카테고리의 다른 글

CodeEngn Basic RCE 19  (0) 2011.07.05
CodeEngn Basic RCE 17  (2) 2011.07.04
codeengn basic rce 4  (0) 2011.07.02
codeengn basic rce 3  (0) 2011.07.02
Abex Crack me 1 && Codeengn Basic RCE 1  (0) 2011.06.30