문제 : Serial이 94E7DB1B 일때 Name은 무엇인가
해당 Serial에 대해서 'Serial accepted' 메시지가 나와야 합니다.
풀이 :
디버거를 켜보자.
문자열 검색으로 Serial을 만드는 함수 위치까지 찾을 수 있었다.
이 문제가 겁나 복잡한것이 40217B에 있는 저 값들을 이용하여 cmp 명령어로 각 경우마다 연산하는 방법이 다르다.
특히 여기서 4013AB와 4013BF가 중요한 함수이다.
4013AB는 쉽게 말해서 특정 메모리 [edx+0x402538] 에 값을 PUSH 해주는 함수이고,
4013BF는 특정 메모리 [edx+0x402538] 에 값을 POP 해주는 함수이다.
대충 이런식으로 하나하나 분석을 하여 알고리즘을 알아내는데 거의 이틀이란 시간이 걸렸다.
분석결과 두 가지 연산을 한다.
처음은 우선 입력한 Name을 받아와 다음과 같이 연산을하여 입력한 Name에대한 SUM값을 구한다.
다음은 SUM 값을 0xF 로 나눈 몫과 나머지로 연산을 하게 된다.
알고리즘을 알았으니 문제에서 주어진 Serial 값을 역으로 타고 가 Name의 Sum 값을 알아내 보자.
Name의 Sum값은 0x32B이다.
[Write-up] CodeEngn Advance RCE 14 (0) | 2020.02.11 |
---|---|
[Write-up] CodeEngn Advance RCE 12 (0) | 2020.02.10 |
[Write-up] CodeEngn Advance RCE 10 (0) | 2020.02.06 |
[Write-up] CodeEngn Advance RCE 9 (0) | 2020.02.04 |
[Write-up] CodeEngn Advance RCE 8 (0) | 2020.02.04 |
댓글 영역