문제
정답은 무엇인가.
13.exe 파일은 PEView로도 열리고 HxD로도 열리는데 ollydbg에서는 위와 같은 메시지가 출력 되면서 열리지 않는다.
x64dbg로는 열린다. 왜...? 64비트도 아닌 것 같은데....? ....
x64dbg는 문자열 검색을 하면 너무 많이 나와서, password를 입력했을 때 나오는 문자열을 이용하여 찾아보려고 했다.
근데 값이 없었다 ^^!
PEView에서는 해당 메시지를 찾아볼 수 있었다.
더불어 성공 구문으로 추측되는 Done! You cracked it! 또한 볼 수 있다.
아무리 찾아도... 해당 구문을 x64dbg에서는 찾을 수 없었다.
그래서 HxD로 hex값을 좀 더 편하게 보았다.
보면 선택된 곳이 암호화된 문장처럼 보인다. (==로 끝나서!)
그리고 하단에 MD5를 볼 수 있었다.
이를 바탕으로 위의 문장이 MD5로 암호화 된 것인가 하고 생각했다.
혹시 UPX가 아닌 다른 걸로 패킹되어있나 싶어서, PEiD에 넣어보았다.
넣어본 결과 C# / Basic .NET으로 되어 있었다.
이 경우에 어떻게 리버싱을 해야 하나 싶어서 찾아보니,
https://hyunmini.tistory.com/20
.net 프로그램 리버싱 툴
리버싱을 하다보면 가끔 닷넷 프로그램을 리버싱 해야 할 경우가 있다. 사실 나도 닷넷 프로그래밍을 공부해본 적은 없기 때문에 자세한 내부구조 까지는 알 수 없으나, 리버싱이 언제나 그렇듯
hyunmini.tistory.com
.net 프로그램 리버싱 툴이 있다는 것을 위 주소에서 알 수 있었다.
블로그에서 소개해준 툴 중에 무료인 dotPeek을 다운받았다.
따로 설정은 해주지 않고 dotPeek만 Install 설정 해준 후, Next - Accept - Install을 수행하였다.
설치한 후, 13.exe 파일을 open 했다.
RijndaelSimpleTest 클래스에서 HxD에서 찾았던 문자열이 있는 것을 볼 수 있었다.
또 RijndaelSimple 클래스에 있는 Encrypt를 통해서 암호화를 하고 있음을 볼 수 있는데,
그 아래줄에서는 Decrypt한 값을 str에 넣고 있다.
그럼 str을 출력하면 평문(==키 값)을 알아낼 수 있을 것 같다.
소스 코드 수정이 되지 않았다 . . .
찾아보니 Export to Project라는 기능이 있어서 (오른쪽 마우스 - Export to Prjoect) 이를 사용하여 프로젝트를 생성했다.
Visual Studio로 프로젝트를 열어주고 RijndaelSimpleTest 클래스에 str을 출력하는 코드를 추가하였다.
그런 다음 프로젝트를 실행시키니, 아래와 같이 평문이 출력되었다.
출력된 평문을 입력하니 문제가 풀렸다!
'Wargame > CodeEngn' 카테고리의 다른 글
CodeEngn Basic RCE L15 (0) | 2021.05.17 |
---|---|
CodeEngn Basic RCE L14 (0) | 2021.05.17 |
CodeEngn Basic RCE L12 (0) | 2021.05.16 |
CodeEngn Basic RCE L11 (0) | 2021.05.16 |
CodeEngn Basic RCE L10 (0) | 2021.05.10 |