문제입니다.

파일을 실행하면 키를 입력란과 체크버튼이 있습니다.

패킹되어 있지는 않습니다.

문자열을 하면 찾아보았습니다.

"Congratulation, you found the right key"라는 문자열이 인증성공 메시지인 것 같습니다.

클릭하여 들어가 보았습니다.

인증 성공 이전에 키값을 비교 하는 부분이 있을 것이기 때문에 가까운 분기문을 찾아 보니 CMP EAX, 7A2896BF

코드가 보입니다.

그럼 EAX가 에는 어떤 데이터가 담겨있는지 확인할 필요가 있겠습니다.

우선 break point를 걸어주고

저는 1234를 key값으로 주고 check버튼을 눌렀습니다 ~

EAX에 4D2가 들어있네요 ~

 

4D2는 10진수로 1234 입니다.

즉, 제가 넣은 키값이 EAX에 담기는 것을 확인할 수 있습니다.

그럼 "7A2896BF"은 10진수로 얼마가 되는지 확인해보겠습니다.

"2049480383‬" 이네요 ~

그럼 이 값을 키값으로 주고 check버튼으르 눌러보겠습니다.

인증 성공했습니다 ~

hxd로 메시지 박스에 출력되는 문자열을 찾아 인증키값 "2049480383‬"으로 덮어씌우고 나머지는 0x00으로 채워주면 될 것 같습니다.

문제에서 중요한 부분이 이 부분인데 덮어쓰는 범위는 0x0d3b ~ 0x0d45가 됩니다. 0x0d61이 아닌

0x0d45인 이유는 문자열의 끝을 알리는 null문자가 0x0d45부분에 있으므로 이 범위를 이후의 문자열은 의미 없는 문자열이 되기 때문입니다.

"12_hxd.exe"라는 이름으로 저장하여 인증을 해보겠습니다.

인증 성공시 messagebox에 키값이 출력되는 것을 확인할 수 있습니다.

Basic RCE L12 성공!

'WAR GAME > CodeEngn(Basic)' 카테고리의 다른 글

Basic RCE L14  (0) 2020.04.29
Basic RCE L13  (2) 2020.04.29
Basic RCE L11  (2) 2020.04.29
Basic RCE L10  (2) 2020.04.29
Basic RCE L09  (2) 2020.04.29

+ Recent posts