파일을 받아 실행하면 Console에서 다음과 같이 작동한다.
password를 입력받고 맞는지 아닌지 결과만 출력해준다.
참조 문자열을 따라 이동하면, 아래의 루틴으로 이동할 수 있다.
패스워드 입력 부분을 넘어가고 나서
404640 함수 이후 반환값(EAX)을 보면 0xA 즉, 10을 반환하고 있다.
strlen 류 함수라고 볼 수 있겠다.
404640 호출 이후 42AAB4에 있는 값(9)과 비교하게 된다.
패스워드 길이를 9로 맞춰야 한다.
위의 분기문을 거치면 아래와 같은 루틴이 보인다.
어떤 기능을 하는지 직접 실행해보면서 알아보자.
410A8C 실행 전의 모습이다. "W3challs Protection system" 문자열 중 Protection의 e의 ASCII 코드를 넣는다.
ECX에서 42AAB4, 9를 빼고 다시 3을 더한다. 즉, -6을 한다.
이후 biKqfrd\m이라는 문자열 중 f를 _로 치환한다.
이후 429D7A 주소에 있는 문자의 ASCII 코드를 EDX를 넣어 위의 작업을 반복한다.
그렇게 문자 몇개를 치환하게 된다.
이후 패스워드로 입력한 값과 치환된 문자열을 비교한다.
42AAA0에 들어 있는 정답 문자열을 입력하면, 아래처럼 성공 메시지를 볼 수 있다.
이것으로 인증하면 되겠다.
'[Wargame Write-up] > W3Challs' 카테고리의 다른 글
[W3Challs] [/dev/null] Security + Javascript ≠ 2 (0) | 2017.02.03 |
---|---|
[W3Challs] [/dev/null] Hard to make easier! (0) | 2017.02.03 |
[W3Challs] [Cracking] My Little Pony CEH (0) | 2017.01.29 |
[W3Challs] [Cracking] Le père Noël est une ordure (0) | 2016.09.28 |
[W3Challs] [Hacking] Change your browser (0) | 2016.09.28 |