1. 문제 파일 실행
문제 파일 실행 시 password 입력하는 프로그램 실행됨
아무 문자열이나 입력하면 계속해서 다시 시도할 수 있음
문제 풀이를 위해서는 비밀번호를 찾아야 할 것이다.
2. 문제 파일 패킹 여부 확인
PEiD로 확인 결과 EP Section이 .text로 나오는 것으로 보아 패킹되지 않은 실행파일이다.
또 하나 살펴봐야 하는 부분은 아래 초록색 박스 안 내용인데, 이 실행프로그램은 C#으로 쓰였다.
C#으로 쓰인 프로그램은 olly debugger 나 immunity debugger로 열리지 않는다.
이것은 아래에 나오는 dotPeek으로 분석할 수 있다.
3. 비밀번호 찾기
dotPeek은 jetbrains에서 제공하는 .NET Decompiler 이자 Assembly Browser이다.
아래 링크에서 다운받을 수 있다.
https://www.jetbrains.com/decompiler/download/download-thanks.html?platform=windowsWeb
Thank you for downloading dotPeek!
Free .NET decompiler and assembly browser
www.jetbrains.com
다운로드 후 dotPeek을 실행하고
문제 파일을 Assembly Explorer로 드래그 앤 드롭 하면 파일이 열린다.
만약 파일이 자동으로 열리지 않으면 사진 왼쪽과 같이 Main 함수를 찾아 열면 decompile 된 코드를 볼 수 있다.
비밀번호가 나와있지 않고 str에 암호화되어 들어있으므로, str을 출력하는 코드를 추가하면 비밀번호를 알 수 있을 것이다.
코드 수정을 위해 프로젝트에서 우클릭 해 Visual Studio에서 열어보았다.
비밀번호 확인을 위해 str값을 출력하는 코드를 한 줄 추가하고 프로그램을 실행한다.
프로그램을 실행하면 콘솔 창에 비밀번호가 출력된다.
확인을 위해 나온 비밀번호를 똑같이 입력하니 성공 메시지가 출력된다.
FLAG : Leteminman
기존 사용하던 디버거로 열리지 않는
C#으로 프로그래밍 된 파일을 dotPeek으로 디컴파일해 풀 수 있는 문제였다.
'해킹 공부 > 리버싱' 카테고리의 다른 글
CodeEngn_Basic RCE L15 (CMP, 레지스터값, hex dump) (0) | 2022.11.17 |
---|---|
CodeEngn_Basic RCE L14 (strings, CMP, EAX/ESI값) (0) | 2022.11.15 |
CodeEngn_Basic RCE L12 (strings, hexedit) (0) | 2022.11.10 |
CodeEngn_Basic RCE L11 (OEP, stolenbyte) (0) | 2022.11.06 |
CodeEngn_Basic RCE L06 (OEP, unpacking, strings) (0) | 2022.10.09 |