티스토리 뷰

CodeEngn Basic RCE의 13번 문제입니다.






해당 프로그램의 정답을 찾아내는 문제입니다.


프로그램을 다운로드 받겠습니다.






'13.exe'라는 이름의 파일입니다.


실행을 시켜보면..






틀린 패스워드를 입력하니 실패 문자열이 나옵니다.


먼저 PEID로 파일의 정보를 보겠습니다.






C#으로 작성되었고, 패킹은 되어있지 않네요.


올리디버거로 열어보겠습니다.






올리디버거로 열리지 않습니다.


왜냐하면, C#으로 작성된 파일은 닷넷 프레임워크가 없는 환경에서는 분석할 수 없기 때문입니다.


닷넷 프레임 워크(.NET Framework)란,


마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경입니다. 주요 지원 언어로는 C#, C++, F#, DLR, Delphi.NET, Visual Basic .NET이 있는데 그중에서도 C#이 닷넷을 위한 언어라고 불릴 정도로 닷넷이 없으면 절대 안 됩니다.


그러니 저는 닷넷용 디컴파일러 툴인 .Net reflector를 사용해서 분석해보겠습니다.


.Net reflector로 '13.exe'를 열어주면..






PlainText와 비교해서 같다면 성공 문자열을, 다르다면 실패 문자열을 띄우는 구조입니다.


하지만 PlainText가 암호화되어있는데요.


복호화 함수를 보고 이해해서 푸는 것보다 그냥 코드 한 줄 추가 하는 게 훨씬 빠를 것 같으니 코드를 수정해보겠습니다.






Visual Studio 2017로 열었습니다.






비교문 전에 PlainText를 복호화하니 비교문 후에 실패 문자열과 함께 복호화된 PlainText가 출력되도록 코드를 수정했습니다.


그리고 실행시켜보면..






(답은 가렸습니다.)


처음에 틀린 패스워드를 입력하니 실패 문자열과 함께 올바른 패스워드가 나오고 그것을 다시 입력하니 성공 문자열이 출력되었습니다.


이제 코드엔진 사이트에 정답을 인증해보면...








'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE - Level 15 풀이  (108) 2017.11.21
[CodeEngn] Basic RCE - Level 14 풀이  (103) 2017.11.16
[CodeEngn] Basic RCE - Level 12 풀이  (109) 2017.11.13
[CodeEngn] Basic RCE - Level 11 풀이  (109) 2017.11.08
[CodeEngn] Basic RCE - Level 10 풀이  (107) 2017.11.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함