- Today
- Total
목록Pwnable/Crackme 처음 풀 때 (18)
Phantom
프로그램을 실행해보니 637일이넘던데..음…. 프로그램을 하나하나 미친 듯이 CMP를 찾아 다니면서 하고 있다가 와업을 보니 Exe2Aut라는 프로그램의 이름을 보았다. 바로 실행했다. 루프의 끝을 바로 보여주네…원래였다면 디버거에서 16진수로나왔을 테니.. CMP EDI, 0x63B8E 이렇게 나왔을 것이다. 이 값을 인코딩하면 Md5 Hash: 6903eef5902839b661840d64a04dd81d
프로그램을 아이다에 넣으니 UPX로 시작된다. 패킹이 되어있나 보다. Upxtool을 써서 패킹을 풀겠다. 그리고 실행해보니 전혀 다른 화면이 나온다. 안티 디버깅인것으로 알고 있다.] IsDebuggerPresent함수의 리턴값을 변조하고 다시 실행한다. 그리고 모든 MessageBox함수에 BP를 걸고 찾다가 Certlab이 출력되는 함수를 찾았다. 그리고 그 아래에 CMP문과 MOV문이 있는데 EDI에 값이 있더라. 그렇다면 MessageBoxW함수 실행하는 도중 sleep이 걸렸다는 건데 보니 timeGetTime함수가 있더라. 이보다 자세한 설명이 없을 것 같아 사진을 첨부한다. 먼저 MessageBox실행된 직후 현재시간을 가져온 다음 ESI에 저장한다. 현재시간을 가져오고 현재시간에서 ESI..
이 문제는 의외로 간단했다. 이 비교문 하나로 값을 비교하는데 EBP-3C에는 이 값이 들어있다 이걸 10진수로 바꿔서 다시 실행해보면 3172251863 이제 이 값을 MD5로 바꾸면 Md5 Hash: dea22fee8d5293acc6fe170a667db7bb
Password를 찾으라…. 디버거로 실행을 하려는데 열리지 않는다. PEID로 보니 .NET 프로그래밍으로 짜여진 것이라 그런가 보다. .NET Reflector로 디 컴파일 할 수 있다 한다. 열었으나 하나도 모른다….. 와업을 보고 따라 할 뿐.. 아래 주석을 해도 되고 안 해도 된다. Console.WriteLine(planText); 추가 답은 MD5해쉬값이므로 Md5 Hash: 718070d944de096f3a6696b077e4e2ce
음…키값을 넣고 네임을 넣으란다 2자리라고 하고.. 델파이로 짜였더라. 로딩 오래걸리더라… 우선 프로그램을 실행해본다. 키값을 넣고 두자리 네임이랬으니 AA를 넣고 실행해본다. 음…저 다음엔 뭘 집어넣어도 실행이 안된다. 저 Please.. 문자열 쪽으로 검색해 들어가봐야겠다. 도저히 아이다로는 알아보기 힘들어 이뮤니티를 써야겠다. 이 프로그램이 3개문자열로 비교를 해서 2자리로 수정한 후의 키 값을 찾았다. 그러나 문제는 154C-6505-D2ADD0F3-A223-2870의 네임을 찾는 것이다. 이 부분에서 앞자리 4자리가 나온다… 그럼 이 연산을 통해 154C가 나오는 알파벳이나 숫자를 찾음 된다 브루트포싱을 하면 되는데…코딩능력이 딸려 소스를 빌려왔다. Bruteforce.c #include #in..
키를 구한 후에 성공메시지 대신 Key값이 나오게 하라..라는 문제이다 크게 어려울거 같지는 않다. 지금 내가 이걸 풀고있는게 신기하다. 키 값을 찾는데는 크게 어렵지 않았다. 그래픽 뷰에 나왔기 때문에.. 7A2896BF를 10진수로 변환하면 2049480383이된다. 자 이제 성공은 했고 저 문자를 키값으로 바꾸기만 하면 된다. 아스키값으로 2049480383을 바꾸면 32 30 34 39 34 38 30 33 38 33이고 계속 출력하게 하면 안되니 끝에 NULL을 넣는다 00 그리고 353B부터 3545까지 수정을 했다 뒤에 문자들은 쓰레기 값이나 다름 없다. 답은 2049480383 353B 3545 - 2049480383353B3545이다.
뭔지 모르겠어서 와업을 보러 갔는데 이게 문제라 한다 아이다로 열아봐야 겠다. 우선 Nag창을 구성하는 OPCODE 수는 6A 00 68 71 30 40 00 68 7C 30 40 00 6A 00 E8 07 00 00 00 = 19Byte 이 창을 없애려면 Push 0 다음에 NOP로 다 채우고 ExitProcess()를 넣으면 된다. 어쨌든 답은 19ExitProcess
뭔지모르고 프로그램을 실행하고 버튼을 누르니 저렇게뜬다. 무한 반복된다 프로그램을 열어봐야겠다. 비베로짜여져있으며 비교함수가 하나더라 BP를 걸고 실행해봐야겠다. Aaaa를 넣으니 바로 비교 숫자가 떴다. 와업을 보고나니 이게 답인듯 한데.. 뭔가찜찜하다. Simples.kr이 사라진건지 모르겠는데 홈페이지가 뜨질 않는다.
이번에도 시리얼 문제이다. 이름이 이게 자꾸 바뀐다 허허.. 아이다를 통해 열어보자 IsDebuggerPresent 함수를 실행하고 리턴값이 0이면 DialogBoxParam 함수를 실행한다 우선 IsDebuggerPresent 함수부터 알아야 겠다. 이 API함수는 디버깅을 감지하는 함수 인데, 디버거같은걸로 열린지 아닌지 탐지할 수 있는데, 디버거로 열리면은 1을 아니면 0을 반환 한 다. 이것은 억지로 0으로 수정한 후에 아래를 실행해야 한다 그리고 스트링을 검색하여 정답인 부분으로 가서 cmp문 근처에 BP를 건다 lstrlenA함수의 리턴값과 0xE를 비교한다. 길이가 14이어야 하나보다, 그래서 길이를 14로 맞춘 후 다시 실행했다. Lstrcpy와lstrcat함수로인해 VaZoNeZ가 두 번..