Wargame | CTF

    CodeEngn Basic06 풀이

    후... 이제는 대놓고 언팩문제가 나오네요 도전해봅시다얼마전에 책을읽었는데 마음에드는 공식? 이 있어서 적어봅니다. 해커는 대부분의 사람들이 말하길 노력보다는 재능이다.. 노력으로 할수없는부분이 있다고 말을하는데 재능은 그다지 중요하지 않다고 합니다. 재능 x 노력 = 기술 기술 x 노력 = 성취아무리 재능이 있어도 노력하지 않으면 이루어 질 수 없고, 재능이 없어도 노력을하면 무엇이든 이룰수 있다고합니다.다시 문제로 돌아가보겠습니다. OEP와 시리얼넘버를 찾으라네요.동적 분석을 위해 프로그램을 실행시켜보겠습니다. 매우 단순한 프로그램입니다. 시리얼을 입력하고, 시리얼이 틀리면 Wrong serial 이라는 메세지박스를 띄우는 프로그램입니다.. 아마 내부에는 복잡하게 언팩되어있겠죠 PEID로 파일을 한번..

    CodeEngn Basic05 풀이

    오늘은 5단계를 풀어보도록 하겠습니다. 많이쉬었네요.. 분발해야겠습니다.일단 동적분석을위해 프로그램을 실행시켜보도록 하겠습니다. 일단 실행시키면 이런 창이 뜨게됩니다. 등록되지않았다고 적혀있고 밑에는 알수없는 시리얼넘버 12자리가 있습니다.그냥 Register now를 누르게되면 시리얼이 틀렸다고나옵니다.음 아마도 알맞는 시리얼넘버를 누르면 맞다는 창이 뜨겠네요. 올리디버거로 가봅시다.일단 실행시키게되면 이 프로그램은 압축,암호화, 그리고 숨겨진 데이터가 많아서 코드분석결과가 믿을수없다네요 음 일단 예를 눌러봅시다..실행을 하긴했는데 F8을 한 10분동안 누르고있었는데도 프로그램이 실행이 안되네요.. 이때까지 야매로 한방법은 안통하나봅니다..함수명도 스트링 참조도 아무것도 안나오네요 음 좀더 고민해봐야겠..

    CodeEngn Basic04 풀이

    흠.. 벌써4단계군요.. 문제를 봐서는 전혀 감이 안옵니다. 디버거를 키면 어떤함수가 감지를 한다는거군요. 프로그램을 한번 실행시켜 보겠습니다. 프로그램을 그냥 실행해보면 정상이라고 뜨네요 1초간격으로요. 음 그럼이제 올리디버거를 이용하여 프로그램을 열어보겠습니다.올리디버거로 열고 Run을 하니 디버깅툴을 감지하네요. 자 이제 찬찬히 알아보도록 하겠습니다. 생각으로는 시나 시쁠쁠로 작성된 코드같고 어떤 함수를 이용해 디버깅툴이 감지되면 문자열 출력함수를 이용하여 화면에 문자를 띄우는것같네요. 문자열을 출력하는 함수를 한번 찾아보겠습니다.일단 메인함수 같은곳에 들어왔습니다. 비쥬얼스튜디오로 컴파일한 파일에서 흔히볼수있는 CCCCCCCCC로 초기화 하는 코드가 보입니다. 잘찾아 왔군요. 디버거를 찾는함수는 ..

    CodeEngn Basic03 풀이

    코드엔진 3번문제 풀이를 해보겠습니다. 비주얼베이직에서 스트링 비교함수의 이름을 묻습니다. 비주얼베이직은 접해본적이없어서 당황스럽네요.. 음 아마 cmpStr 이런류의 함수이름이 아닐까하고 추측해봅니다. 실행을 한번해봅시다.영어가 아니라서 무슨뜻인지는 모르겠지만 아마도 이 메세지박스를 없애라는 뜻이겠죠?? 일단 확인을 누릅니다. 뭔가 코드를 입력하는창이 나옵니다. Registeration 인거같은 버튼을 누르면 무언가 아니라고 뜹니다. 올리디버거로 가봅시다.Search for에 가서 모든 참조하는 String을 보겠습니다. 동적분석하면서 보았던 문자열들이 보이는군요 더블클릭 해줍시다.해당 문자열에서 BP를 걸어주고 다시 실행시켜보았습니다. 스택에 문자열을 넣고 함수를 호출하는군요. 402C92 번지에 있..

    CodeEngn Basic02 풀이

    코드엔진 Basic02를 풀어보도록 하겠습니다. 우선 실행을 시켜봅시다.실행파일이 손상되어 실행이 정말안되는군요.. 올리디버거로도 열리지가 않습니다. HxD로 한번열어보았습니다.Crackme#1.JK3FJZh 라는 문구가 보입니다. 패스워드인것같군요. 문제풀이 끝!

    CodeEngn Basic01 풀이

    1일 1문제로 매일매일 한문제씩 풀어보기로 하였습니다. 뭔가 목표를 정하지 않으니 목적없이 시간만 흘러가는것 같네요...1일차 문제 Basic01일단 파일을 받아 실행을 시켜보았습니다.내 하드를 시디롬으로 인식하게 만들라는군요.확인을 눌렀더니 시디롬이 아니라고 뜹니다. 올리디버거로 확인해봅시다.코드가 정말 짧습니다. Stub코드가 안보이는것은 어셈블리어로 작성되었다는 소리죠. 살펴보니 GetDriveTypeA라는 함수를 사용해 드라이브타입을 리턴받아 CMP EAX,ESI 어셈블리어를 이용해 비교후 같으면 점프합니다. 비교하기전 EAX와 ESI 레지스터 값입니다. 다르기때문에 점프하지 않습니다. 단순하게 성공메세지를 띄우기 위함이므로 JE 를 JMP로 바꿔줍시다.성공입니다 !