Name이 CodeEngn일 때의 Serial 값을 구하는 것이 문제이다.
파일을 실행시켜서 CodeEngn과 아무 serial 값을 입력해보았다.
Serial이 틀렸다는 문구가 출력되었다.
일단 exeinfo를 통해 패킹 여부 등을 확인해보았다.
결과 알 수 없는 실행파일이라고 뜨는데 잘 실행이 되기도 하고 별 문제가 없어 보였다.
X32 디버거로 열어주었다.
문자열 찾기를 통해 성공 플래그가 있는 것 같은 부분으로 이동해주었다.
흐름을 보니, 위의 그림의 회색 줄의 함수에서 문자열을 비교하고 그 아래 아래 줄의 je에서 Good로 갈지 Bad로(위의 그림에서는 Bad라고 되어있지 않은데, 실행시키면 Bad라고 뜬다) 갈지 정해지는 것을 알 수 있다.
즉, 우리는 위의 call 함수에서 어떤 리턴 값이 발생하는지 알면 된다.
일단 call 함수에 BP를 걸고 Name은 CodeEngn, Serial은 21312324라는 랜덤 값을 넣어주었다.
BP가 걸린 함수 위에서 06162370056B6AC0이라는 값과 내가 입력한 Serial 값을 불러와서 비교한 후 점프를 취하고 있다.
해당 부분이 CodeEngn이라는 Name에 대한 serial 값임을 예측할 수 있고, 디버거를 재실행해서 serial 값에 06162370056B6AC0 값을 넣어주었다.
넣고 F8로 한 줄씩 실행해보니 je에서 Good 노드로 점프하는 것을 알 수 있으며, 즉 CodeEngn에 해당하는 serial 값이 06162370056B6AC0 임을 알 수 있다.
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE L20풀이 (0) | 2021.09.13 |
---|---|
[CodeEngn] Basic RCE L19풀이 (0) | 2021.09.13 |
[CodeEngn] Basic RCE L17풀이 (0) | 2021.09.13 |
[CodeEngn] Basic RCE L16풀이 (0) | 2021.09.13 |
[CodeEngn] Basic RCE L15풀이 (0) | 2021.09.13 |