- Today
- Total
목록Pwnable (104)
Phantom
도스로 뜨는 프로그램이다. 비밀번호 입력하면 또 참 거짓으로 나눠줄 것 같은데… 디버거로 열어보자 문자열은 이상한 것이 나온다 이제껏 보지 못한 언어인 듯 하다. PEID로 뭐로 짜여져 있는지 알아야겠다. …dev-C++이네 뭐…그래 함수를 찾아봐야겠다. Strcmp 함수 발견 두 곳에 BP를 걸고 실행한다. ….? BP를 넘었..? 프롤로그 이후 저곳에서 모든 것이 일어나는 것 같다 저 안에 들어가서 문자열을 찾아보니 나왔다. Correct와 Wrong에 BP를걸고 먼저 들어가 분기문에도 BP를 걸어야겠다. 16-03-12 아…. 항상 삽질을 한다..ㄷ 지금 저 CMP문에 7F97E56C를 아스키로 생각해서 아니라 생각했는데 그래서 계속 삽질했는데 저걸 10진수로 바꿔야 하더라 그 힌트를 IDA에서 얻..
이번에도 시리얼을 넣고 체크하는 것 같다 디버거로 열어보자 바로 문자열을 봤는데 시리얼이…???? 뭐지 이문제? 두곳과 분기에 BP를 걸고 실행해봐야겠다 호오.. strcat로 로컬 디스크를 붙이는 것 같은데 로컬 디스크는 어디서 온것이지? 이 함수가 VolumeNameBuffer 를 인자로 해서 strcat를 한다. 이제 그럼 천천히 아래로 내려가보자 위의 루프와 함수를 다 거쳐서 마지막 비교함수에 왔다 저것이 시리얼이고 위에가 내가 입력한 문자열이다. 다르면 에러로 보낼것이다. 저 시리얼을 그대로 입력해보자 clear
시리얼을 찾는 문제이다. 비베로 만들어졌고.. 맞는 시리얼이 입력되면 아래 Registered가 활성화가 되는 것 같다. 한번 디버거로 열어보자 비베 머신 들어가기 전에 문자열을 봐야겠다. . 문자열이 있다 BP를 걸고 부분으로 가보니 이렇게는 되어 있으나 다른 곳과 동떨어진 곳이었다. 함수를 봐야겠다. 문자열 비교 함수 발견 여기다 BP를 걸고 실행해봐야겠다. 모두 입력이 되는 것이 아닌가보다 a한개 입력했는데 값이 나왔다. 이 값을 따로 실행해서 넣어봐야겠다. 활성화가 됐다 clear
하…..이걸 이상하게 하는 바람에 2일을 삽질 했다. 이젠 아예 힌트 같은걸 보지 않고 해야겠다 그거를 잘못 봐서 2일을 버렸…다. 우선 프로그램을 실행하기 전에 ReadMe.txt를 읽어보자 시리얼이 저것일 때 이름을 찾아라. 이다. 프로그램을 열어보자. 이름을 입력 하고. 시리얼을 입력한다. 디버거를 열어서 aaaaaa가 어떤 시리얼로 바뀌는지 봐야겠다. 입력하고, 비교 루프에 들어온 것 같다 ESI와 3을 비교하는 것을 보니 3번에 걸쳐 어떤 것이 루프를 도는 것 같다. 이것을 보니 부호 확장 MOV라는데 잘은 모르겠다 ECX는 10, 20, 30이렇게 루프를 돌면서 바뀌고 EDX는 아까 내 문자열이 하나씩 비교가 된다. 그리고 이곳에서 복호화가 일어난다. 61과 10을 XOR연산하여 ECX에 저장..
프로그램을 실행해보니 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이다.