전체 글 80

[dreamhack] level1 legacyopt 문제

legacyopt 바이너리를 실행하면 입력할 수 있는 칸이 나온다. 입력을 하면 7912394e5c 와 같은 특정한 문자열을 출력해주는 것을 확인할 수 있다.그리고 같은 디렉터리에 저장되어 있는 output.txt를 확인해보면220c6a33204455fb390074013c4156d704316528205156d70b217c14255b6ce10837651234464e라는 문자열이 저장되어 있다. IDA 분석사용자에게 입력받은 값을 s에 저장v3에 입력값의 길이를 저장 ptr, s, v3를 인자로 하는 sub_1209함수 실행s의 길이만큼 반복ptr[i]를 출력 sub_1209 함수 분석unsigned __int64 __fastcall sub_1209(_BYTE *ptr, char *input, int inp..

[dreamhack] level1 Recover

바이너리를 실행해보니 "fopen() error"라는 문구만 출력된다. ida로 확인해봐야할 것 같다. 문제를 읽어보니, flag.png 파일에 flag가 들어있고 해당 파일을 암호화한 파일인 encrypted 파일을 복호화하여 flag.png로 복구시켜야 하는 문제 같다.  IDA 분석flag.png 열음실패하면 fopen() error 출력 encrypted 파일 열음실패하면 fopen() error 출력 flag.png를 성공적으로 읽었다면 ptr ^= v6[v5 % 4];ptr += 19;fwrite(&ptr, 1uLL, 1uLL, s);++v5;연산을 수행하여 flag.png를 암호화하고 encrypted 파일에 암호화함 문제 해결 방안v5 = 0;while ( fread(&ptr, 1uLL, ..