Wargame/CodeEngn Basic RCE

CodeEngn Basic RCE L12 Write-Up

0xe82de_ 2019. 8. 20. 00:47
728x90
728x90
728x90

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

 

CodeEngn.com [코드엔진] - Challenges

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

codeengn.com

[사진 1]

풀어보자.

 

 

[사진 2]

Key 값으로 1234를 입력하고 Check 버튼을 클릭하면 아무것도 뜨지 않는다. 문제에 나와있듯이 올바른 Key를 입력해야 성공메시지를 볼 수 있다.

 

 

[사진 3]

올리디버거로 파일을 실행하면 EP에서 바로 밑에 성공 메시지가 보인다. MessageBoxA 함수를 호출하기전에 CMP 명령어로 EAX 레지스터의 값과 0x7A2896BF 값을 비교한다.

 

 

[사진 4]

Key 값으로 100을 입력했더니 EAX 레지스터에 0x64 값이 저장된다. 0x64는 10진수 100을 16진수로 표현한 것이다. 즉, 입력된 Key 값을 16진수로 변환한 후 0x7A2896BF 값과 비교하고 같으면 성공 메시지를 확인할 수 있다.

0x7A2896BF 값을 10진수로 변환하면 2049480383이다.

 

 

[사진 5]

위와 같이 성공 메시지 박스를 볼 수 있다.

 

 

[사진 6]

HxD 도구로 파일을 열면 바로 성공 메시지가 하드코딩되어 있는 것을 확인할 수 있다. 내용 부분을 Key 값으로 변조하면 사용되는 영역은 0x0D3B ~ 0x0D45이다.

 

Auth Key 값은 Key 값과 [사진 6]에서 확인한 사용되는 영역이다.

728x90
728x90