12번 문제이다.
일단 key 값을 구해야하는 것 같다.
한번 실행해봤는데 역시나 key값이 필요한 모양이다.
Ollydbg로 파일을 열어주자.
구글링을 해보니 key 값, 패스워드, 시리얼 값 등을 알아낼 때에는 문자열을 보는 게 좋다고 한다.
문자열 검색을 해보았다.
3가지 정도가 뜨는 것 같은데, 그 중에서 right key를 찾았다며 축하하는 문자열이 있다.
여기로 이동해보았다.
바로 위쪽에서 CMP로 EAX와 7A2896BF를 비교하는 부분이 있다.
두 값이 같으면 축하문구가 나오고 아니면 점프한다고 한다.
따라서 EAX 값이 7A2896BF가 되어야 한다.
비밀번호에 10을 입력해보았다.
EAX에 A가 저장되는 것을 확인할 수 있다.
10진수로 입력하면 16진수로 저장되는 건가 싶어서 다시 한번 확인해보았다.
이번엔 14를 입력해보았다.
예상대로 E가 저장되어 있는 것을 확인할 수 있었다.
EAX 값이 7A2896BF이므로 이거를 10진수로 바꿔주면 2049480383이 나온다.
입력해보았다.
성공 메세지가 출력되었다.
이제 성공메세지 대신에 key 값이 출력되도록 덮어써보자.
HxD를 실행시키고 파일을 올린 뒤 성공 문구가 출력되는 부분을 찾는다.
이 부분을 2049480383으로 바꿔줘야하는데, 16진수 아스키코드로 바꿔서 넣어주고 빈 부분은 0으로 그냥 채워준다.
그러면 위의 화면처럼 된다.
key 값을 overwrite한 영역을 보면 00000D3B ~ 00000D44까지임을 알 수 있다.
하지만 문자열의 맨 끝에는 NULL이 들어가는 것을 생각하면 00000D45까지라고 할 수 있다.
따라서 문제에서 말하는 영역은 0x0D3B ~ 0x0D45 이다.
결론적으로 답은 20494803830D3B0D45이다.
'Security > Reversing' 카테고리의 다른 글
[리버싱 입문] 1장 리버싱을 위한 기초 지식 (0) | 2022.06.26 |
---|---|
[Reversing.kr] Easy Crack (0) | 2022.06.25 |
[CodeEngn] CodeEngn Basic RCE L11 (0) | 2022.06.25 |
[CodeEngn] CodeEngn Basic RCE L10 (0) | 2022.06.25 |
[CodeEngn] CodeEngn Basic RCE L08 (0) | 2022.06.25 |
댓글