안녕하세요. 오늘은 codeengn basic level 9를 풀어보겠습니다.

홈페이지로 들어가 level 9를 눌러주세요.

stolenByte를 구하세요. 라고 적혀 있군요.stolenByte란 직역하면 훔친 바이트란 뜻입니다. 여기서는 원래프로그램에서 훔쳐내어 다른 부분으로 옮겨진 코드를 의미합니다.파일을 받아 열어봅시다.


키파일을 못찾았다는군요. 올리디버그로 열어봅시다.

재생버튼을 한 번 눌러줍시다.

내용이 바뀌는 것이 보입니다. 일단 프로그램이 실행되는 부분인 OEP 부분을 찾아봅시다. 아래로 쭉 내려가서봅시다.

맨마지막줄에 브레이크를 걸고 실행을 해보니 실행이 안되었습니다. 그래서 그다음줄에 브레이크를 거로 해보니 실행이 되더군요. 즉 맨마지막줄에서 점프한 곳이 OEP일수 있습니다.

OEP로 가기 위해 맨마지막 줄에서 오른쪽 마우스를 눌러서 fallow로 들어갑시다.

OEP로 왔긴 왔습니다만 알아들을 수 없는 문구만 있습니다. 실행버튼을 한 번 눌러줍시다.

네 아무래도 여기가 시작부분인것 같습니다. 그런데? 다 한번 훑어보시면 빠진것이 하나 있습니다.

이 문구입니다. 위의 OEP부분을 보시면 well done 박스도 있고 error박스도 있는데 왜 처음뜨는 이박스가 보이지 않습니다. 그래서 이 문자열을 찾기 위해 아래와 같이 해보았습니다.

밑에 보시면 click OK to .... 라고 OEP부분에 없던 문자열이 나옵니다. 더블클릭해서 들어갑시다.

네 찾았습니다만 이문구는 OEP부분에 없었습니다. 그렇다면? 혹시 문제에서 말한 stolenByte가 이것들일 수 있습니다. OEP에서 훔쳐온 바이트 말입니다.

그래서 차례대로 68002040006812204000을 넣어보았습니다. 

아니라는군요. 흠... 아무래도 이것들 외의 stolenByte가 있는 모양입니다. 그런데 stolenByte부분을 보시면 push라고 되어있네요. push는 스택에 값을 넣는다는 의미입니다. 그런데 push가 stolenByte위에 하나 있네요. push 0 이라고 되어있습니다. 혹시 이것도 딱히 의미는 없지만 같이 빼온것이 아닐까 하는 생각이 드는군요.

그래서 위의 6A00까지 더한 6A0068002040006812204000을 넣어보았습니다.

인증을 해보겠습니다.

맞는 모양이네요. 아무래도 이번문제는 약간 때려맞춘 감이 조금 있습니다....

암튼 이것으로 문제풀이를 마치겠습니다.

 





'codeengn' 카테고리의 다른 글

codeengn - basic rce level 11  (0) 2015.08.12
codeengn - basic rce level 10  (0) 2015.08.05
codeengn - basic rce level 8  (0) 2015.08.05
codeengn - basic rce level 7  (0) 2015.08.03
codeengn - basic rce level4  (0) 2015.07.20
Posted by englishmath
,