Reversing/DreamHack

Input 값에 알맞은 값을 넣어 Correct 값이 나오게 하면 되는 문제이다. 먼저 IDA에 프로그램을 넣고 main함수를 찾아보겠다. Strings 항목에서 Correct 부분을 더블클릭해준후 F5를 통해 디컴파일 해주면 main함수를 찾을 수 있다. 딱봐도 sub_7FF677621000에 true가 반환되게 하면은 Correct를 얻을 수 있다. 보면은 byte_7FF677623000[i]의 값이 i xor (a1+i) + 2*i랑 같아야 통과할 수 있다. byte_7FF677623000값을 hex view에서 보면은 아래와 같다. 우리가 필요한 값은 0x18까지 즉, 24자리이므로 49부터 45까지의 값을 긁어와 파이썬을 이용해 플래그를 확인해보겠다. by = [0x49, 0x60, 0x67, ..
한줄씩 차근차근 해보겠다. [Register] rcx = 0 rdx = 0 rsi = 0x400000 ======================= [Memory] 0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d 0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c 0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00 ======================= [code] 1: mov dl, BYTE PTR[rsi+rcx] // dl = 0x67 2: xor dl, 0x30// 0x57 3: mov B..
[Code] main: push rbp mov rbp, rsp mov esi, 0xf mov rdi, 0x400500 call 0x400497 mov eax, 0x0 pop rbp ret write_n: push rbp mov rbp, rsp mov QWORD PTR [rbp-0x8],rdi mov DWORD PTR [rbp-0xc],esi xor rdx, rdx mov edx, DWORD PTR [rbp-0xc] mov rsi,QWORD PTR [rbp-0x8] mov rdi, 0x1 mov rax, 0x1 syscall pop rbp ret ================================== [Memory] 0x400500 | 0x3037207964343372 0x400508 | 0x003..
프레딕
'Reversing/DreamHack' 카테고리의 글 목록