Basic RCE L12

HelloMG
|2020. 2. 28. 18:53

Basic RCE L12

Key값과 주소영역을 찾으라고 하는군요!

 

일단 Key 값을 먼저 찾아보도록 합시다 :D

프로그램 실행

프로그램을 실행 시키니 역시 Key을 입력하라고 하네요! 

OEP

OEP는 패킹이 되어있지 않고 너무 깔끔합니다!

 

그래서 문자열로 찾아보니 메시지 박스 성공문자와 이상한 긴 문자열이 존재하더군요!

루틴

찾아서 가보니 긴 문자열이 암호화되는 것 처럼 마냥 계속해서 반복 루틴을 하게 됩니다!

그러나 아무런 의미는 없었던 것이었죠!

 

CALL 함수를 들어가봅시다!

CALL 함수

뭐 그냥.. 음.. Fake 인것 같죠? :D

 

최종적으로 보면 40107D 함수에 EAX가 7A2896BF가 되어야 성공메세지를 띄울 수 있습니다 :D

Key 값으로 100을 입력해줘보았습니다!

Key 100

그런데 EAX가 64로 들어가는거 보이시나요?

10진수 100이 16진수로 64임을 눈치 채셔야 합니다 :D

 

그럼 답이나왔죠!

바로 계산기를 띄워봅시다 :D

계산기

EAX가 7A2896BF되어야 하니

7A2896BF값을 반대로 10진수로 변환해서 넣으면 되지 않을까요 :D !?

Key 2049480383

역시나 예상대로 맞았군요 :D

성공메시지 박스가 띄워졌으니 Key 값은 2049480383이네요!

 

그럼 이제 Key값을 메시지 박스에 띄우기 위해 HxD로 조작을 해줘야합니다!

성공 문자열

성공문자열에 위치를 확인했습니다!

 

Key 값으로 바꿔줘볼까요!

Key값으로 변경

이렇게 변경되었습니다!

그럼 최종적으로 위치는 0D3B ~ 0D45가 되겠군요!

 

여기서 왜 뒤에 00이 포함되나요? 33이 끝이 아닌가요? 할 수도 있습니다!

문자열은 반드시 끝임을 나타내는 00이 붙기 때문에 00까지 새어주셔야 합니다 :D

 

이렇게 문제풀이 마치도록 하겠습니다 !

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L14  (0) 2020.03.28
Basic RCE L13  (0) 2020.03.22
Basic RCE L11  (0) 2020.02.24
Basic RCE L10  (0) 2020.02.23
Basic RCE L09  (0) 2020.02.15