Never Stop Running

[CodeEngn] BASIC 12 본문

Training/Codeengn

[CodeEngn] BASIC 12

Gyoran 2018. 9. 24. 08:59

리버싱 공부를 위한 문제풀이로

정답을 찾는 것과는 조금 다를 수 있습니다.

[CodeEngn] BASIC 12


문제 풀이 환경

Windows 10 / Intel / x32dbg / HxD

 문제 URL

https://www.codeengn.com/challenges/basic/12


BASIC 12번 문제.

문제는 Key값과 메세지 창이 뜰 때 Key값이 보이도록 값을 overwrite하는 위치의 주소를 알아내는 것이다.


[다음을 찾기] - [현재 모듈] - [문자열 참조]를 이용하여 성공시 나타나는 문자열을 확인했다.


값을 받아오는 GetDlgItemInt 함수와 성공문자열이 나오기 전의 CMP에 Break Point를 걸었다.

실행을 위해 임의의 값을 넣었다. Key = 123456.


GetDlgItemInt 함수를 지났다. 보통 함수의 리턴값은 EAX로 받기때문에 EAX값을 확인해보았다. 16진수로 1E240, 10진수로 123456의 값이 제대로 들어가있다.


Break Point를 걸었던 CMP를 자세히 보니 내가 넣은 값이 들어있는 EAX레지스터와 16진수 7A2896BF를 비교한다. 그리고 같으면 성공했다는 창이 뜬다.

그래서 16진수 7A2896B = 10진수 2049480383값을 넣어보더니 성공했다는 창이 떴다.


Key값이 메세지 박스로 나타나게 만들기 위해 HxD라는 헥사 에디터로 파일을 열어보았다.

원래 'Congratulation, you found the right key'라는 문구 부분을 Key값으로 수정했다.


Key값을 넣었을 때 Key값이 들어간 메세지 창이 나타났다. 즉, Key값 overwrite하는 주소는 [0D3B] ~ [0D45]까지이다. (NULL값 포함)


'Training > Codeengn' 카테고리의 다른 글

[CodeEngn] BASIC 14  (0) 2018.09.24
[CodeEngn] BASIC 13  (0) 2018.09.24
[CodeEngn] BASIC 10  (0) 2018.09.24
[CodeEngn] BASIC 08  (0) 2018.09.24
[CodeEngn] BASIC 07  (0) 2018.09.24
Comments