문제
Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다.
이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다.
문제 : Key값과 + 주소영역을 찾으시오.
Ex) 7777777????????
ollydbg로 열어보자.
일단 성공 메시지를 볼 수 있다는 건 성공 메시지가 있다는 거니까 문자열을 검색해보자.
문자열을 검색하니 0040108B에 성공 메시지가 있음을 알 수 있다.
성공 메시지가 있는 곳으로 가보면 0040107D에 CMP EAX, 7A2896BF가 있다.
EAX와 7A2896BF를 비교해서 맞으면 성공 메시지를 출력한다.
0040107에 BP를 걸어두고 실행해보자.
11111 값을 입력했을 때 HEX에 해당하는 값이 EAX에 들어가는 것을 보면, EAX는 내가 입력한 값이 들어간다.
그럼 7A2896BF가 key값일 것이다.
7A2896BF는 hex 값이니까 10진수로 바꿔주자.
10진수로 바꾸면 2,049,480,383이 된다.
즉, 2049480383이 키 값이다.
그럼 이제 우리가 알아야 할 것은 HexEdit에서 MessageBox 성공 구문에 해당되는 0x???? ~ 0x????값이다.
HxD로 열어보자.
HxD에서 문자열을 검색한 결과 성공 구문은 0xD3B ~ 0xD62에 해당되는 것을 볼 수 있다.
그럼 최종적인 답은 2049480383D3BD62이라고 생각했는데 . . 아니었다^^!
왜지????????????????
알아냈다.
문제 이해를 잘못했다. 성공 구문에 해당되는 게 아니라 overwrite 되는 영역을 찾는 것이었다.
위에서 찾았던 키를 HxD에 직접 입력해보자.
그렇게 하면 위와 같이 값이 설정되고, 이때 해당되는 주소는 0xD38~0xD45이다.
2049480383D3BD45를 입력했더니 또 아니었다.
자세히 보니 문제에서 0x???? ~ 0x???? 물음표가 4개인 것을 볼 수 있다.
그래서 0x0D38~0x0D45라고 생각하고 20494803830D3B0D45를 입력해보았다.
그랬더니 문제가 풀렸다!!!
문제를 잘 읽자~!~!
'Wargame > CodeEngn' 카테고리의 다른 글
CodeEngn Basic RCE L14 (0) | 2021.05.17 |
---|---|
CodeEngn Basic RCE L13 (0) | 2021.05.17 |
CodeEngn Basic RCE L11 (0) | 2021.05.16 |
CodeEngn Basic RCE L10 (0) | 2021.05.10 |
CodeEngn Basic RCE L09 (0) | 2021.05.10 |