Wargame/CodeEngn

CodeEngn Basic RCE L12

esyeonge 2021. 5. 16. 03:43
문제
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