문제 : 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가
답 : " EqfgEngn " <- 드래그
1. 프로그램 살펴보기
프로그램 자체는 평범한 시리얼을 입력하여 인증하는 프로그램이며, 패킹도 되어있지 않다.
2. 코드 분석
올리디버거로 열어보니 이렇게 나온다.
살펴보다가 의심스러워 보이는 함수가 호출되어 구글에 검색해 보았다.
루트 디렉토리의 파일 시스템에 대한 정보를 읽어 오는 함수인것 같은데, 이 함수가 문제에서 말한 C드라이브의 이름과 연관이 있다고 생각한다.
그리하여 함수가 호출되는 00401099에 브레이크포인트를 걸고 순차적으로 실행해보았다.
실행하며 시리얼이 생성되고 있음을 알 수 있었다.
먼저 초기에 스택에 "4562-ABEX"가 입력되고 검정색 박스(위의 박스)부분에서 2번 반복되어
4,5,6,2의 각 자리의 값이 1씩 두번 더해져 최종적으로 "6784-ABEX"가 만들어진다.
두번째로 파란색 박스 부분에서 기존의 "6784-ABEX"에 "L2C-5781"이 앞에 더해져서 최종적으로
"L2C-57816784-ABEX"라는 문자열이 만들어진다. (이는 또한 문자열을 합치는 함수인 strcat이 호출된것을
통해서도 알 수 있다.)
그리고 마지막으로 L2C-57816784-ABEX와 내가 입력한 asdf값을 비교해서 성공의 여부를 결정하는 것 같다.
일단 L2C-57816784-ABEX가 생성된 시리얼 같으니 창에 입력해 보았다.
역시 답이였다. 그러나 코드엔진에서는 C드라이브의 이름이 CodeEngn일때의 시리얼을 구하라고 하였으니 다시 해 보겠다. 일단 C드라이브의 이름을 CodeEngn으로 변경하고 다시 프로그램을 처음부터 실행했다.
아까와 비슷한 일련의 과정을 거쳐 시리얼 "L2C-5781EqfgEngn4562-ABEX"가 만들어졌다.
이때 문제는 CodeEngn이 무엇으로 변경되냐고 물었으니 CodeEngn -> EqfgEngn이 되었으므로 정답은 EqfgEngn이다.
Auth에 입력해보니 정답이였다.
'리버싱 > 리버싱 문제 코드엔진' 카테고리의 다른 글
코드엔진 Basic RCE L09 (0) | 2021.07.27 |
---|---|
코드엔진 Basic RCE L08 (0) | 2021.07.21 |
코드엔진 Basic RCE L06 (0) | 2021.07.13 |
코드엔진 Basic RCE L05 (0) | 2021.05.25 |
코드엔진 Basic RCE L03 (0) | 2021.05.18 |