우선 Key 값을 찾기 위해 성공 메시지 부분을 살펴보았다.
40107D에 breakpoint를 걸고 이 부분을 한 줄씩 실행해 보았다. 403000부터 403527을 아우르는 문자열을 ESI에 넣고, 4바이트씩 더해서 EBX에 넣어 40110F 함수의 연산을 하는데, 그 문자열이 null일 때까지 반복한다. 이 문제를 푸는 데에는 별 의미 없는 낚시 코드이다.
결국 Key 값은 40107D의 CMP operand 중 하나이다.
그 다음, Hex Editor에서 성공 메시지 대신 key 값을 넣으려면 어느 범위에 넣어야 하냐는 문제이다. 12.exe을 복사한 후 hex editor로 열어보자.
Block 안의 값이 성공 메시지이다. 이 곳을 key 값이 되도록 채워보자. 채우고 남은 부분은 null(00)로 채운다.
채워보면 0D3B ~ 0D45(null 값까지) 범위에 key 값이 존재하게 된다. 인증키는 지금까지의 정보를, 문제에서 시키는 대로 조합하면 된다.
'[Wargame Write-up] > CodeEngn Challenges' 카테고리의 다른 글
[CodeEngn Challenges] Basic RCE 14 (0) | 2016.08.30 |
---|---|
[CodeEngn Challenges] Basic RCE 13 (0) | 2016.08.30 |
[CodeEngn Challenges] Basic RCE 11 (0) | 2016.08.29 |
[CodeEngn Challenges] Basic RCE 10 (0) | 2016.08.29 |
[CodeEngn Challenges] Basic RCE 09 (0) | 2016.08.29 |