안녕하세요. 오늘은 basic rce level 13을 풀어보겠습니다.

홈페이지로 들어가 basic rce level 13을 눌러주세요.

정답을 찾으라는군요. 파일을 열어 봅시다.

 

패스워드를 입력하라네요. 올리디버그로 열어봅시다.

그런데 올리디버그로 여니까 바로 실행이 되는군요. 그래서 프로그램을 닫았더니

 위와 같은 메세지가 뜨면서

올리디버그의 내용이 사라져 버립니다. 아무래도 올리디버그론 풀 수 없는 문제인 것 같습니다. 이럴땐 어떻게 해야 할까요?

일단 이 프로그램이 어떤 언어로 짜였는지 어떤 패커로 패킹했는지 알아내야 합니다. 이럴 땐 프로그램을 사용하면 간단하게 알아 낼 수 있습니다. PEID란 프로그램을 사용해 봅시다.

사용법은 정말 간단합니다. 그냥 ^^^를 눌러 알아볼 파일을 열어주시면 됩니다.

밑에 보시면 net을 이용하는 마이크로소프트 C#으로 제작이 된 것 같습니다.

visual이 쓰인걸로 보아 visual c#로 컴파일 된것 같습니다. 컴파일이라는 것은 인간이 작성한 고급언어를 컴퓨터가 알 수 있는 기계어로 번역시키는 것을 의미합니다. 하지만 우리는 기계어를 모르기 때문에 우리가 알 수 있는 고급언어로 번역시켜 줄 필요가 있습니다. 기계어를 고급언어로 번역시키는 것을 디컴파일 이라고 합니다. 디컴파일 프로그램을 사용해 봅시다.

여러가지 프로그램이 있지만 이번문제에서는 널리 알려진 C# .NET DecompilerReflector을 사용해 보겠습니다.

실행을 했으면 가져올 파일을 선택 후 리플렉터 안으로 드래그 앤 드롭을 해주시면 됩니다.

그러면 밑에 하나가 추가되는 것을 볼 수 있습니다.

+버튼을 눌러 세분화를 시켜보면 Main소스부분이 나옵니다.

소스를 확인했으면 위로 올라가 오른쪽 마우스를 눌러 disassemble를 눌러주세요. 디셈블을 하는 것입니다.

그리고 저장합시다. export를 눌러줍시다.

그리고 start를 눌러주시면 해당 경로에 파일이 저장됩니다.

완료되었으면 경로를 복사해 아무폴더주소에 붙여주시면 됩니다.

그러면 아래와 같이 파일이 뜹니다. 확인하셨으면 이제 파일을 열어봐야 겠지요?

확장자가 cs이므로 c#파일입니다. 파일을 여시면

위와 같이 소스가 뜹니다. 밑에 보시면 readLine와 plainText가 같을 경우 성공문자열이 나온다는군요. 우리는 정답을 알아내야 합니다. 위쪽을 보시면 plainText에 무언가를 저장시키네요. 그 값을 알기 위해 우리는 plainText를 출력해 볼 필요가 있습니다.

다음과 같이 입력해주시면

프로그램 실행시 위와 같이 정답이 뜨는 것을 알 수 있습니다.

 

 인증을 해보면

네 정답이 맞는 것 같습니다. 이것으로 문제풀이를 마치겠습니다.

'codeengn' 카테고리의 다른 글

codeengn - basic rce level 15  (0) 2015.08.18
codeengn - basic rce level 14  (0) 2015.08.18
codeengn - basic rce level 12  (0) 2015.08.12
codeengn - basic rce level 11  (0) 2015.08.12
codeengn - basic rce level 10  (0) 2015.08.05
Posted by englishmath
,