코드엔진 Basic RCE L12 Write Up

War Game

2019. 7. 16. 01:15

반응형

디버거로 열어보면 생각보다 한눈에 들어오는 코드들이 보인다.

우리가 여기서 주목해야할 점은 MessageBoxA 함수다.

MessageBoxA함수 위를 보면 CMP로 비교하는 문이 있다.

임의의 값을 입력하고 실행해보면

EAX에는 B가 들어가게 된다.

즉 우리가 입력한 값은 16진수로 저장된다.

비교하는 16진수를 10진수로 변환해주고

key값에 입력해주면 2049480383이 key값이 맞다고 한다.

일단 key값은 구해줬고 HxD를 이용해 overwrite를 해주면 성공문자열 대신 key값이 나오는 부분을 찾아보자.

조금만 내려보면 성공문자열이 보이게 된다.

이곳을 overwrite를 해주면 성공문자열 대신 key값을 출력하게 만들어 줄 수 있다.

수정해주고

수정한 영역을 보면 D3B ~ D45가 overwrite 영역임을 알 수 있다.

문제에선 0x????라고 말했으니 0x0D3B ~ 0x0D45로 표기해줄 수 있다.

즉 정답은 20494803830D3B0D45이다.

반응형

'War Game' 카테고리의 다른 글

코드엔진 Basic RCE L14 Write Up  (0) 2019.09.29
코드엔진 Basic RCE L13 Write Up  (0) 2019.07.31
코드엔진 Basic RCE L11 Write Up  (0) 2019.07.13
코드엔진 Basic RCE L10 Write Up  (2) 2019.07.13
코드엔진 Basic RCE L09 Write UP  (0) 2019.06.30