먼저 올리디버거로 12번 문제를 열기. 문제에서 key값과 주소영역을 찾으라고 했으니 먼저 key값을 구하는 목표로 할것입니다. Key 값을 입력하고 이를 비교하는 것은 성공 시 문자열을 찾는 것도 좋은 방법이기 때문에 search for-> all referenced text strings에 접근해보겠습니다.
회색부분에 키를 찾았다는 것을 축하해주는 문자열을 확인 할 수 있습니다. 이 부분을 눌러서 코드 안으로 들어가보겠습니다.
코드를 살펴보면 cmp eax 7A2896BF를 볼 수 있습니다. 이는 cmp와 eax와 7A2896BF값을 비교하는 것입니다. Jnz 는 not zero jump로써 비교된 값이 0이 아닌 경우 (제로플래그 값이 0인경우)에 해당 주소로 이동하는 명령어입니다. 따라서 비교된 값이 0이 아닌 경우 성공 부분을 건너뛰게 되는 것입니다. 비교된 값이 같아야 점프하지 않고 바로 아래코드를 실행합니다. 키 값은 7A2896BF임을 알 수 있습니다.
7A2896BF가 16진수이기 때문에 이를 10진수로 변환한 2049480383을 키 값으로 입력하고 check를 누르면 congratulation 문구를 출력함을 확인 할 수 있습니다
여기서 문제를 다시 보면 키 값이 메시지 박스에 출력 되도록 hex edit로 오픈해서 키 값을 오버라이트 하면 되는 것입니다. HdX를 이용하여 12번 문제 파일을 열어보았고 성공메시지 대신 키값이 출력되어야하기 때문에 찾기를 눌러 기존의 성공메시지를 검색해보았습니다..
이 부분에 성공 문자열이 있음을 확인 할 수 있습니다.
성공 문자열 대신 키 값이 출력되어야하기 때문에 코드를 수정하였습니다. 그렇다면 영역은 0D3B~ 0D45까지입니다. 키 값과 합치면 20494803830D3B0D45D이라는 답을 구할 수 있습니다.
'2. Reversing (리버싱) > 1) Write UP' 카테고리의 다른 글
[2021.11.20] CodeEngn Basic RCE L17, L18, L19, L20 풀이 (0) | 2021.11.21 |
---|---|
[2021.11.13] CodeEngn Basic RCE L13, L14, L15, L16 풀이 (0) | 2021.11.15 |
[2021.11.06] Codeengn 11,Nag 창 없애기 (0) | 2021.11.07 |
[2021.10.09] CodeEngn Basic RCE L07, L08, L09, L10 풀이 (0) | 2021.10.09 |
[2021.09.25] abex crackme 5, PE파일 (0) | 2021.10.04 |