티스토리 뷰

level13 문제를 보면 그냥 정답을 찾는 시크한 문제네요.


실행을 하게 되면 패스워드를 찾는 문제입니다. 오류가나면 Bas Luck!이 출력되는 군요.


Exeinfo로 실행을 해보면 C#으로 되어있네요. C#은 워게임 문제에서 종종 출제가 되는데, 일반 올리디버거 같은 디버거로는 디버깅이 불가능 하기 때문에 C# 전용 디컴파일을 이용해야 합니다.


.NET Reflector8을 이용하면 C# 파일을 디컴파일이 가능합니다. 디버깅은 못한다는게 아쉽네요.

http://hyunmini.tistory.com/20

위의 링크에 Reflector 사용법이 자세하게 설명되어 있으니 참고하시기 바랍니다.


실행 로딩 화면입니다.


실행을 하면 맨 아래에 실행 파일인 ConsoleApplication3가 보이는데, 한번 하나씩 보겠습니다.


기본적으로 RijndaelSimple 모듈 과 RijndaelSimpleTest 모듈이 있는데, 두 번째로 들어가서 Main을 확인 하겠습니다.


string으로 설정한 단서들이 보이네요. 일단 눈에 띄는게 Label_0056 라인에서 if(Console.ReadLine() == plainText)를 비교해서 맞으면 성공을 합니다. 즉, 사용자가 입력한 패스워드와 내장되어 있는 plainText와 비교를 하네요. 답은 plainText입니다. 하지만, 위에 보이는 Decrpyt를 풀어야 합니다. 일단 진행을 하겠습니다.


RijndaelSimple 모듈에는 Decrpyt와 Encrypt가 있습니다. 하나씩 보겠습니다.


Encrypt함수의 모습인데, hash 알고리즘 MD5를 집어넣고 마지막에는 Base64로 바꿔서 바이트 배열로 저장을 하네요.


Decrypt함수의 모습입니다. 전체적으로 봤을 때 buffer에 Base64String으로 cipherText를 읽어와서 저장하고 스트링 값으로 읽어들이는 것 같습니다. 하지만 도통 감이 오지 않았기에 다른 방법을 선택했습니다.


소스를 내보내기 기능인 Export Source Code를 이용하여 C#소스를 Export 해보겠습니다. VisualStudio가 깔려있다면 대부분 C#을 실행할 수 있을겁니다.


5개의 파일을 Export를 합니다.


위의 파일중에 ConsoleApplication3.csproj 를 눌르면 주위에 있는 C# 소스들을 가져옵니다. 아직 C#을 깊게 배우지 않아서 생소하지만 C++을 실행할 때도 프로젝트를 선택하면 딸려오는 것과 비슷하다는 것을 느꼈습니다.


실행을 해보면 Reflector 도구와 마찬가지로 소스를 보여줍니다. 하지만 여기서는 디버깅이 가능하다는 장점이 있습니다. 디버깅을 해도 되지만 소스를 보니 plainText 부분을 출력하는 소스를 추가해주면 되겠다고 생각해서 소스를 한 줄 변경 했습니다.


변경한 코드인데, 일단 if(Console.ReadLine() == plainText) 부분에서 '==' 을 '!=' 로 바꾸고 if 안에서 Console.ReadLine()을 출력하면 답이 나옵니다.


출력을 하면 답이 바로 나옵니다. 천천히 따라하면서 답을 찾아보시기 바랍니다.




'Wargame > codeengn' 카테고리의 다른 글

[codeEngn] Basic RCE level15  (0) 2015.07.29
[codeEngn] Basic RCE level14  (0) 2015.07.29
[codeEngn] Basic RCE level12  (0) 2015.07.29
[codeEngn] Basic RCE level11  (0) 2015.07.29
[codeEngn] Basic RCE level10  (0) 2015.07.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함