728x90
728x90
728x90

파일 링크: https://codeengn.com/challenges/

 

CodeEngn.com [코드엔진] - Challenges

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰 주제로 소프트웨어 보안에 대한 다양한 시각과 연구주제에 대한 정보공유를 추구하고 있으며, 상업적 이익 없이 작은 예산으로 운영하고 있어 큰 예산으로 운영하는 다른 컨퍼런스에 비해 여러 가지로 부족 할 수 있습니다.

codeengn.com

[사진 1]

풀어보자.

 

 

[사진 2]

파일에 Name, Serial을 입력하고 Check 버튼을 클릭하면 아무 반응이 없다. Serial이 올바를 때만 반응하는 것 같다.

 

 

[사진 3]

die로 확인해보면 .NET 파일이기 때문에 리플렉터로 코드를 디컴파일하면 된다.

 

 

[사진 4]

위와 같이 .NET Reflector 도구로 디컴파일하면 C# 코드를 확인할 수 있다.

 

 

[사진 5]

파일을 까보면 Name, Serial을 비교하고 있다. Name 값의 경우 길이가 0x5~0x1b이고, Serial 값의 경우 길이는 0x1a이다. 그리고 Serial 값의 9번째 값과 18번째 값은 '-' 문자여야 한다. 코드엔진 문제에서 제시한 Name이 "CodeEngn" 값이고 Serial이 "28BF522F-A5BE61D1-XXXXXXXX" 값이므로 X 값들을 찾으면 된다.

 

 

[사진 6]

Name과 Serial 값을 검사후 Name과 Serial의 "28BF522F-A5BE61D1" 부분을 이용하여 X 값들을 만든다. 그리고 X 값을 비교하고 맞으면 성공한다. 따라서 str3(X값 부분)을 무작위 대입하여 때려 맞추면 된다. 위 빨간색 박스는 내가 임의로 추가한 코드이고 다른 방법으로 무작위 대입해도 된다.

이 문제는 다른 문제보다 주의해야할 점이 있는데 위 사진에서 보이는 GetHashCode() 함수는 32bit, 64bit 컴퓨터 환경에서 각각 다른 값을 반환한다. 코드엔진 Auth Key 값은 32bit 환경의 값이므로 32bit 환경에서 실행해야 한다.

 

 

[사진 7]

나는 윈도우7 32bit 가상환경에서 진행했다.

 

Auth Key 값은 32bit 환경에서 무작위 대입 후 나오는 값이다.

728x90
728x90

'Wargame > CodeEngn Advance RCE' 카테고리의 다른 글

CodeEngn Advance RCE L09 Write-Up  (0) 2019.09.09
CodeEngn Advance RCE L08 Write-Up  (0) 2019.09.09
CodeEngn Advance RCE L06 Write-Up  (0) 2019.09.06
CodeEngn Advance RCE L05 Write-Up  (0) 2019.09.06
CodeEngn Advance RCE L04 Write-Up  (0) 2019.09.06

+ Recent posts