Name이 CodeEngn일 때의 Serial 값을 구하는 것이 문제이다.
일단 EXE INFO를 통해 패킹 여부를 확인해보았는데, 패킹이 되어있지 않았다.
이제 파일을 실행시켜보니 Name과 Serial값을 입력해야 했다.
아무 값이나 입력하면 Try Again!이라는이라는 문구가 출력된다.
X32 디버거를 사용해서 분석하였다.
문자열 찾기를 통해 Try Again! 부분으로 이동해주었다.
흐름을 살펴보니, 위의 그림에서 클릭되어 있는 부분에서 eax와 45B884가 같지 않으면 Try Again으로 이동하는 것을 알 수 있다.
그래서 위의 call 함수에 bp를 걸고 eax와 45B884에 어떤 값이 들어가는지 확인하였다.
처음에 Serial 값에 무작위로 1을 입력하였더니 EAX값에 1이 저장되었다.
Eax에 serial 값이 저장되는 것을 알 수 있었다.
이제 45b884 위치로 덤프해서 이동해보니 아래와 같이 0x60, 0x61이라는 값이 들어있는 것을 볼 수 있다.
해당 부분에서 검색해보니 데이터는 리틀 엔티언 방식으로 저장되기 때문에 원래의 값을 보고 싶다면 0x61 0x60 순서로 봐야한다고 한다.
따라서 계산기에 16진수 6160을 넣어주었더니 24,928이라는 값을 얻을 수 있었다.
문제 실행파일에 직접 넣어주면 문제가 해결되었음을 알 수 있다!
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE L17풀이 (0) | 2021.09.13 |
---|---|
[CodeEngn] Basic RCE L16풀이 (0) | 2021.09.13 |
[CodeEngn] Basic RCE L14풀이 (0) | 2021.09.13 |
[CodeEngn] Basic RCE L12풀이 (0) | 2021.08.18 |
[CodeEngn] Basic RCE L11풀이 (0) | 2021.08.18 |