본문 바로가기

해킹/리버스 엔지니어링

코드엔진 basic RCE L03 풀이

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요 오늘은 3번 문제를 풀이해보도록 하겠습니다.



A2DC1DEA.exe


이 문제는 올리디버거에서 문자열을 찾을 수 있느냐 없느냐를 알아야 되고, 사용하는 함수의 이름을 유추해내는 방법을 알 수 있냐고 물어보는 것 같습니다.


일단 문제부터 보여드리겠습니다.





일단 프로그램을 실행시켜보도록 하겠습니다.








Regcode에 아무 코드나 입력하면  오류가 뜨는군요?





그럼 본격적으로 올리디버거로 문자열을 찾는 방법을 알려드리도록 하겠습니다.


일단 올리디버거로 파일부터 열어봅시다.





저번에 풀었던 L01보다 프로그램이 길기때문에  L01처럼 하나 하나 살펴보기가 매우 버겁습니다.  그러나 프로그램에 사용된 문자열을 이용한다면 훨씬 손쉽게 필요한 부분만 살펴볼 수 있습니다.



문자열을 찾는 방법은 간단합니다.  오른쪽 클릭 -> Search for -> All referenced text strings 로 이동하시면 됩니다.








아마 해보시면 상당히 많이 나올건데 그중 제가 맨 아랫부분을 잘라서 가져왔습니다.  맨 아랫 부분의 문자열을 조금 훑기만 해도 왠지 이게 답과 관련이 있을 것같다! 라는 느낌이 오실겁니다.  특히 2G83G35Hs2 이 녀석이 답과 직접적인 관련이 있다는 것은 조금 감이 날카로우신 분이라면 딱 알아채실겁니다. 그럼 저 2G83G35Hs2 를 더블클릭해 저 문자열이 사용된 부분으로 이동해보겠습니다.





이동하면 이런 명령어들이 나오는데, 어셈블리어에서 함수에게 매개 변수를 넘겨줄 때 스택을 사용하여 push하고 원하는 함수를 call 하는 방법을 사용합니다. 그렇다면 원하는 문자열을 집어넣고 vbaStrCmp라는 함수를 호출하는군요? 그런데 cmp라는 것이 비교를 한다라는 뜻을 가지고 있으니 처음 문제의 스트링 비교 함수의 이름은 이거다! 라고 알아낼 수 있습니다.



덧글 남겨주시면 힘이 됩니다★