Wargame & CTF/abex' crackme 5

[abex' crackme] 5번 문제 풀이

문제 풀이 우선 파일을 열어보자. 시리얼을 입력하라는 창이 뜬다. 아무 값이나 입력을 하고 확인을 누르면 올바르지 않다는 에러 메시지가 뜬다. ollydbg로 파일을 열어보자. 밑으로 조금만 내려보면 아까 본 에러창이 보이고 그 위에 분기문이 보인다. 그 윗부분을 살펴보자. lstrcmpA 함수는 대소문자를 구분하여 문자열을 비교하는 함수이다. 리턴값인 EAX가 0이 되어야 한다. lstrcmpA 함수에서 비교하는 문자열이 같으면 0값을 반환한다. 그렇다면 String1, 2가 같은 값을 가지면 된다. 그 위에 lstrcatA 함수는 한 문자열에 다른 문자열을 추가해주는 함수이다. 이를 입력하고 check버튼을 눌러주었다. 이를 보아 우리가 입력해주는 값이 String2에 들어가서 비교되는 것을 알 수 ..

[abex' crackme] 4번 문제 풀이

문제 풀이 파일을 실행시켜보았다. 아무거나 입력을 해보아도 버튼이 활성화되지 않는다. ollydbg로 파일을 열어보았다. ollydbg에서 문자열을 찾아보았다. "Well done!" 이라는 문자열이 보인다. 일단 저 문자열을 따라가 보았다. MSVBVM60.__vba 이런 식의 문자들이 보인다. 이러한 정보들로 보아하니 비주얼 베이직으로 프로그래밍된 것을 알 수 있다. (peid를 이용하면 바로 알 수 있는 정보이다.) 비주얼 베이직으로 쓰인 함수들이다. 이는 우클릭 -> search for ->all intermodular calls 를 통해 볼 수 있다. 보다보면 StrCMP 라는 부분이 있는데 이 곳에서 비교해준다는 것을 예측할 수 있다. (시리얼 값을 입력받을 때, 그 값이 시리얼인지 아닌지 비..

[abex' crackme] 3번 문제 풀이

문제 풀이 파일을 실행시켜보았다. 확인을 누르면 파일을 찾을 수 없다는 메시지창이 뜬다. ollydbg로 파일을 열어보았다. 열자마자 우리가 아까 보았던 메시지창들이 보인다. 위에서부터 살펴보면 파일을 확인하려면 ok를 누르라는 메시지창을 띄운다. 그 밑에는 CreateFileA 가 보인다. 이는 파일 또는 I / O 장치를 만들거나 열어주는 기능을 한다. Mode의 OPEN_EXISTING은 파일 또는 장치가 있는 경우에만 열어준다. FileName은 "abex.l2c"이다. 즉, "abex.l2c" 파일이 있을 경우 이 파일을 열어준다. 하지만 현재 우리는 저 파일을 갖고 있지 않기 때문에 실행을 시키면 JE SHORT crackme3,00401075 가 실행되어 에러메시지를 띄운다. 그래서 "abe..

[abex' crackme] 2번 문제 풀이

문제 풀이 우선 파일을 실행시켜보았다. 이러한 창이 뜬다. abcd를 입력해보았지만 역시나 실패했다. 이 파일을 ollydbg로 열어보았다. F9로 실행을 시켰다. CALL로 함수를 호출하고 있으니 F7을 사용해서 한 줄씩 실행을 시켰다. 이러한 코드들이 뜬다. 하지만 이것을 다 찾을 수 없으니 문자열을 살펴보았다. (00401238 주소값에서 찾아야 한다.) 쭉 내리다보면 우리가 아까 보았던 메시지와 다른 메시지들이 보인다. 아까 본 "Nope, this serial is wrong!"이 있는 코드로 가보았다. 코드를 올리면서 더 살펴보니 중요하게 봐야 할 점프문이 눈에 보인다. 이 구간에서 스택을 살펴보았다. 이와 같이 나와있으며 느낌상 "C5C6C7C8"이 serial 같아서 입력을 해보았다. 알맞..

[abex' crackme] 1번 문제 풀이

문제 풀이 우선 파일을 실행시켜 보았다. 그러면 이러한 메시지를 확인할 수 있다. 확인을 누르면 이런 메시지가 출력이 된다. 이 문제는 Ollydbg를 사용하여 풀었다. Ollydbg로 파일을 열어보았다. F9를 눌러 실행시켜보았다. 이 부분이 메인인것 같다. F8을 누르며 한 줄씩 실행하였다. 아까 실행시켰을 때 보았던 메시지가 보인다. 0040101D INC ESI : ESI 값을 1 증가 0040101E DEC EAX : EAX 값을 1 감소 0040101F JMP SHORT abexcm1.00401021 : 00401021 주소값으로 점프 00401021 INC ESI : ESI 값을 1 증가 00401022 INC ESI : ESI 값을 1증가 00401023 DEC EAX : EAX 값을 1 ..