CodeEngn Challenges : Basic 12 문제 풀이

안녕하세요~~


테라트입니다


오늘도 코드엔진 문제풀이 시작하겠습니다 ㅎ


오랜만에 코드엔진 사이트에 들어가 보니 화면 디자인이 조금 바뀌었네요


URL : https://codeengn.com/challenges/



새로 바뀐 화면에서는 문제별로 사이트가 존재하지 않았습니다


그냥 스크롤 내려서 12번 문제를 찾으시면 됩니다



파일 이미지를 누르면 해당 문제의 파일을 다운로드 할 수 있고


새롭게 파일 패스워드가 생긴 듯합니다



파일을 다운로드한 후 동적으로 실행 먼저 해보겠습니다


키 값을 체크하는 프로그램 같아서 아무 값이나 입력하고 Check를 눌러보았습니다



올바른 키 값을 입력하지 않으면 동작하지 않는 것 같군요






패킹되어 있지 않은 것을 확인하고 바로 올리디비거에 올려보았습니다


올바른 키를 입력했다면 성공했다, 축하한다 등의 메시지가 보이겠죠?


문자열을 검색해보겠습니다



축하 메시지로 보이는 부분을 확인했습니다!


이제 올바른 키 값인지를 확인하는 CMP 명령어가 나올 것 같아서

잘 살펴보니 CMP 명령어가 있었습니다



** CMP A B

: A와 B의 값을 비교하는 어셈블리어


CMP 함수로 숫자와 비교하는 것으로 보아 키 값이 숫자임을 추측해볼 수 있습니다


올리디버거에서는 숫자가 16진수로 표현이 되는데

프로그램 상에서는 10진수로 계산됩니다


그래서 CMP 함수에서 비교하는 값을 계산기를 통해 10진수로 변경해보도록 하겠습니다



계산기에서 보기-프로그래머용으로 변경하시면 다음과 같이 계산기 배치가 변경이 됩니다


Hex : 16진수

Dec : 10진수

Oct : 8진수

Bin : 2진수


입니다


10진수로 변경하면 다음과 같은 숫자를 확인할 수 있습니다



맞는 키 값인지 프로그램을 통해 확인해보도록 하겠습니다



다음과 같이 성공 메시지를 확인할 수 있습니다!


문제에서 제시한 해결 조건은 키 값을 알아내는 것에서 그치는 것이 아니라

키 값을 입력했을 때 성공 메시지 대신 키 값이 노출되도록 요구하였습니다


HexEditor를 사용하면 됩니다


HexEditor는 이전 글에서 설명했기 때문에 따로 사용법은 설명하지 않고 바로 진행하도록 하겠습니다



스크롤을 내려서 성공 메시지에 표시되었던 문구를 찾으면 됩니다


Ctrl + V를 통해 메시지 대신 키 값을 입력해주시고


값의 마지막에 Null 값을 추가해주어야만 문자열이 끝난 것을 알 수 있습니다


그렇기 때문에 Hex 값의 문자열 마지막 부분에 00을 추가적으로 입력하여 줍니다



다음과 같이 설정 후 저장한 다음 프로그램을 다시 실행해서


아까 찾은 키 값을 입력해주시면



성공 메시지 대신 키 값이 표시됨을 확인할 수 있습니다!!


수고하셨습니다 :)


댓글, 0

1 2 3 4 5 6 7 ··· 20

테라트

Since 2018.07.03 / IT 관련 정보, 일상의 공유를 위한 블로그