Simple Crack Me | 워게임 | Dreamhack Simple Crack Me Description Exercise: Simple Crack Me에서 실습하는 문제입니다. 이 문제는 사용자에게 숫자를 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너 dreamhack.io 1. 시작 단계 프로젝트를 생성해준다. 생성하지 않으면 Tool Chest에 용 그림이 뜨지 않는다. 들어오면 처음에는 프로젝트 폴더가 비어있을 텐데, File에서 Import File을 해서 simple_crack_me를 해준다. 처음엔 여기서 불러오기가 안되길래 Ghidra를 처음부터 다시 깔았는데 꼭 User 폴더에 생성해야한다. 그 이유는 나도 모르겠다..
◾문제 파악 우선 PowerShell로 chall1.exe를 실행시켜 보자 그러면 문자열을 입력했을 때 flag 값과 일치하지 않으면 Wrong을 출력해내는 프로그램이라는 것을 파악할 수 있다 ◾문제 분석 정적 분석을 하기 위해 IDA 프로그램으로 chall1.exe를 선택한다 그러면 메인 함수는 크게 이러한 구조로 이루어졌다는 것을 알 수 있다 운이 좋게도 Correct와 Wrong 문자열을 쉽게 찾을 수 있었다 그러면 메인 함수를 F5를 눌러 디컴파일 해보자 그러면 if 문에서 입력받은 값이 sub_140001000 함수로 이동하여 그에 따른 결과 값에 따라 출력될 문자열이 달라진다는 것을 알 수 있다 그러면 sub_140001000 함수를 더블 클릭하여 더 분석해보자 _BOOL8 __fastcall..
◾문제 파악 프로그램을 실행시키면 문자열을 입력하라는 Input 메시지가 뜨게 되고 아무 문자열이나 입력하면 Wrong 이라는 결과 값이 표시가 된다 고로 Correct를 표시하게 하는 문자열도 존재한다는 것을 알 수 있다 ◾정적 분석 IDA 프로그램을 사용하여 chall0.exe 파일을 분석해본다 우선 Correct라는 문자열이 사용된 위치를 찾기 위해 문자열 검색을 하자 shift + F12를 누르면 문자열 리스트가 나오게 된다 여기서 Correct라는 문자열을 쉽게 찾을 수 있다 더블 클릭하여 어셈블리 코드에서 문자열을 출력하는 위치를 찾는다 버퍼에 Correct가 저장되어 출력되는 것이므로 Buffer를 선택하고 x 단축기를 눌 상호참조를 해본다 그러면 이런식으로 메인 함수로 이동하게 되고, F5..
1. lsLiSt의 약자, 디렉토리에 있는 파일의 목록을 나열하는 명령자주 사용하는 옵션-l: 파일들을 나열할 때 자세히 출력-a: 경로 안의 모든 파일 나열(숨김 파일도)2. cdChange Directory의 약자, 디렉토리를 이동하는 명령.: 현재 디렉토리..: 상위 디렉토리3. pwdPrint Working Directory의 약자, 현재 디렉토리의 전체 경로 표시파일 이름이나 디렉토리 제일 앞 글자를 '.'으로 지정하면 자동으로 숨김 파일이 됨 4. rmReMove의 약자, 파일이나 디렉토리 삭제, 삭제할 때 권한 필요-f: 강제로 삭제, 대상이 없는 경우에는 메시지 출력하지 않음-r: 디렉토리 내부의 모든 내용 삭제-d: 비어있는 디렉토리들만 제거-i: 매번 삭제할 때마다 사용자에게 삭제 여부..