본문 바로가기

[CodeEngn Challenges] Basic RCE 17 (데이터 주의...) Name이 한 글자라고 되어있는데, 실제 한 글자만 입력해보면, 더 입력하라고 한다. 저 메시지를 출력하는 부분으로 이동하면, Name은 3글자 이상이어야 함을 알 수 있다. 그러므로 문제를 풀기 위해 한 글자만 입력할 수 있도록 패치한 후 진행한다. 패치 후 파일로 추출해 실행해보면 방금 전 메시지가 출력되지 않는다. 방금 전처럼 성공 메시지 출력 부분을 찾아가 그 곳으로 가보면, 45BBA9의 JNE문을 기준으로 성공 메시지 출력 / Sleep(333)으로 쪼개짐을 알 수 있다. 더 위를 보면 Key 값의 크기는 30 byte 이하임을 알 수 있는데, 이 부분에 breakpoint를 걸도록 한다. 실행해 breakpoint 부분으로 오면, F8로 한 단계씩 진행하면서 Key를 생성하는 함수가 어디인지.. 더보기
[CodeEngn Challenges] Basic RCE 16 16.exe을 실행. Name은 CodeEngn으로 고정이므로, Password에 적당히 1234 기입. 당연한 결과이지만, 틀렸다고 표시하고 있다. Ollydbg로 열어, Password가 일치할 때에도 어떤 문장이든 출력할거라는 가정 하에, 이 프로그램에서 참조하는 문자열을 찾았다. 그래서 발견한 “Good Job!” 이 문자열을 참조하는 주소로 이동 후, “Good Job!”, “Wrong password!”의 분기점을 찾아, 그 위에 있는 CMP 구문을 실행하는 주소에 breakpoint를 걸었다. 실행 후, 첫 시도 때와 같이 Password로 1234를 입력하고 breakpoint 부근까지 진입했다. CMP 구문에서 비교하는 두 값을 확인 즉 답은 0xE4C60D97의 10진수이다. 더보기