워게임/CodeEngn [CodeEngn] Basic RCE L05 문제풀이 - 문제 정보 이 프로그램의 등록키는 무엇인가 풀이 힌트 2-1. Packing 2-2. UPX 문제 풀이 더보기 3-1. 잘못된 키를 입력하면 "Wrong Serial, try again!" 이라는 문구를 출력하는 프로그램이다. 3-2. "Wrong Serial, try again!" 문자열의 주소를 확인한다. ※ 프로그램 실행해야만 해당 문자열이 검색된다. 여기에서 패킹을 의심했어야 한다. 3-3. 에러 문구를 출력하는 주소를 따라가면 [call 05.403B2C] 함수 호출 후 결과 메시지를 출력하는 것을 알 수 있다. 3-4. [call 05.403B2C] 함수의 호출 전/후로 BP를 걸어서 확인해보자 3-5. BP를 걸고 프로그램을 재실행해보니 별다른 변화가 없고 BP가 비활성화 되어있다. 3-6. 프로그램이 패킹되어 있는 것 같다. PEiD를 이용해 확인해보니 UPX로 패킹되어 있음을 알 수 있다. 3-7. UPX를 이용해 언패킹한다. 3-8. 패킹 이후 프로그램을 다시 디버깅하여 문자열 참조 시 키로 의심되는 값이 보인다. 3-9. 입력한 키 값의 참/거짓을 판별하는 함수 호출 전에 브레이크 포인트를 설정한다. 3-10. 키 값을 [754-GFX-IER-954] 에서 [GFX-754-IER-954]로 변경하고 실행했음에도 또 실패했다. 키 값의 참/거짓을 판별하는 BP에 걸리지 않고 지나쳤다. 에러 메시지를 출력하는 다른 분기문이 추가로 있다고 판단할 수 있다. 3-11. 코드를 잘 살펴보니 "Wrong" 메시지를 출력하는 주소코드는 두 개이고 각각 [00440F72], [00440F8C]로 확인된다. 3-12. 기존에 BP를 설정했던 함수 호출 뒤에는 값이 다를 시에 [00440F72] 주소로 분기하고, 그 위에 [00440F34] 주소에서 추가적인 로직 검증이 있는 것으로 확인된다. 3-13. 추가로 확인되는 값 검증 부분에 BP를 설정하고 실행해보니, 키 위에 적힌 "Unregistered..." 문자열과 "Registered User" 문자열을 매개로 받는 것을 확인할 수 있는데 키 외에도 추가로 문자열 비교를 하는 것으로 보인다, 3-14. User와 Key를 입력 후 프로그램 실행 결과 정상적으로 키 검증이 완료됐다. 3-15. (정답) 이 프로그램의 키는 GFX-754-IER-954 이다. 공유하기 게시글 관리 MSS '워게임 > CodeEngn' 카테고리의 다른 글 [CodeEngn] Basic RCE L07 문제풀이 (0) 2021.12.31 [CodeEngn] Basic RCE L06 문제풀이 (0) 2021.12.30 [CodeEngn] Basic RCE L04 문제풀이 (0) 2021.12.29 [CodeEngn] Basic RCE L03 문제풀이 (0) 2021.12.29 [CodeEngn] Basic RCE L02 문제풀이 (0) 2021.12.27 Contents 당신이 좋아할만한 콘텐츠 [CodeEngn] Basic RCE L07 문제풀이 2021.12.31 [CodeEngn] Basic RCE L06 문제풀이 2021.12.30 [CodeEngn] Basic RCE L04 문제풀이 2021.12.29 [CodeEngn] Basic RCE L03 문제풀이 2021.12.29 댓글 0 + 이전 댓글 더보기