rev
-
CodeEngn Basic RCE 15$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 7. 16:07
해당 파일을 열어보겠습니다. 이렇게 입력을 하면 다음과 같은 메시지 박스가 나옵니다. 일단 틀렷을때의 문자열을 찾았습니다. 해당문제는 바로전 문제인 14번 문제와 매우 비슷한 것 같습니다. Ollydbg를 이용해서 해당 Try Again! 문자열을 확인해 보겠습니다. 해당 문자열을 더블 클릭해서 해당 주소로 이동후에 BP를 알맞은 곳에 걸어보겠습니다. 해당 문자열의 맨처음 시작지점인 458800에 BP를 걸었습니다. F9를 이용해서 BP까지 이동을 하면 Name과 Serial을 입력 받습니다. CodeEngn과 1234를 입력하겠습니다. 그리고 아래로 좀 내려가면 CMP를 이용해서 값을 비교해서 결과값에 따라서 분기를 하는 곳을 찾을 수 있습니다. 입력 Serial 값인 1234가 16진수의 형태로 EA..
-
CodeEngn Basic RCE 14$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 7. 16:06
해당 문제에서 Name과 Serial을 입력하는 폼이 있는것 같습니다. 한번 파일을 확인해 보겠습니다. UPX로 Packing 되어 있는 파일입니다. 해당 파일을 UPX.exe 파일로 Unpacking을 해보겠습니다. Unpacking 한 후의 파일을 확인해 보면 다음과 같습니다. 올리디버거로 열어 보겠습니다. 이런 모습의 코드가 나옵니다. 일단 함수를 확인해서 입력받는 함수를 찾아 보겠습니다. GetDlgItem 관련 함수를 전부 BP걸어 보았습니다. F9를 이용해서 이동해 보겠습니다. 4번정도 누르니까 입력을 받기 위해서 대기를 합니다. Name에 CodeEngn , Serial에 1234를 입력해 보겠습니다. 그러면 004012BD에서 멈춰 있습니다. 4012C2부터 코드를 해석해 보도록 하겠습니다..
-
CodeEngn Basic RCE 13$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 6. 14:06
파일을 실행해 보면 다음과 같이 console에서 실행 됩니다. 올리디버거로 파일을 열어서 분석을 하려고 했지만.. 열리지 않습니다. 그래서 파일이 어떻게 이루어져 있는지 확인을 해봤습니다. Microsoft Visual C#으로 되어 있습니다. 그래서 열리지 않았던 것 같네요.. C#을 디컴파일 할수 있는 툴을 생각해 봤는데 ILSpy 툴이 떠올랐습니다. ILSpy 툴 다운로드 주소 : https://sourceforge.net/projects/ilspyportable/ 13.exe를 열면 다음과 같이 파일이 열리고 디컴파일 된 소스코드를 찾습니다. 해당 13.exe 파일에는 2개의 class가 있는것 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20..
-
CodeEngn Basic RCE 12$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 6. 14:04
파일을 열어 보면 다음과 같이 Key를 입력받는 프로그램이 하나가 나옵니다. 해당 프로그램에서 옳바른 키를 입력했을때 문자열이 나올 것입니다. 올리디버거에서 문자열을 찾아보겠습니다. 너무나도 한눈에 보기 쉽도록 되어 있습니다. 저기 40107D에서 비교를 해서 같으면 Congratulation이 출력 되는 것 같습니다. 그렇다면 입력을 받는 함수가 있을터 해당 함수를 찾아보겠습니다. GetDlgItemInt 이라는 함수가 있습니다. 해당 함수가 데이터를 입력받고 비교 하는 역할을 하는 것 같습니다. BP를 걸고 F9로 따라가보면 입력 창이 뜨는데 저는 9라는 숫자를 입력했습니다. 그리고 아래로 내려가 보면 다음과 같이 반복되는 부분이 있습니다. 다음 사진의 구간을 계속해서 반복하는데 엄청나게 긴 문자열을..
-
CodeEngn Basic RCE 11$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 6. 13:50
파일의 OEP와 Stolenbyte를 찾는것이 문제 입니다. OEP는 main함수가 시작되는 가장 맨처음의 주소를 의미하고, Stolenbyte는 원래 있어야 하는 코드가 없을때 그부분의 시그니처를 이야기 합니다. 파일을 한번 보면 UPX 파일 입니다. UPX -d 파일명 명령어를 쳐서 언팩을 하면 언팩된 파일이 나옵니다. 먼저 언팩 하지 않은 파일을 먼저 확인해 보겠습니다. 역시 PUSHAD가 있는 것으로 보아 팩 되어 있는 파일입니다. F8을 한번 눌러서 넘어가시면 다음과 같이 ESP가 수정 되어있습니다. 우클릭후 Follow in Dump를 클릭하시면 해당 주소의 hex값의 Dump로 가게 됩니다. 위의 사진 같이 해당 hex가 가르키는 곳으로 bp가 걸리게 되고 F9를 눌러서 이동합니다. 이동하게..
-
CodeEngn Basic RCE 10$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 6. 13:48
해당 문제는 해당 문제파일의 OEP를 구한 후에 분기점의 OPCODE를 구하면 되는 것입니다. 해당 파일을 PEID로 확인해 보겠습니다. Aspack으로 패킹이 되어 있습니다. 언패킹을 해보겠습니다. 저기 아래에 보면 Aspack v2.0/2.001 이라는 문자열을 확인 할수 있습니다. 올리디버거로 확인해 보겠습니다. 좀 아래로 내려가 보면 다음과 같은 화면을 확인 할 수 있습니다. PUSHAD 라는 문자열을 확인 할 수 있습니다. PUSHAD는 범용 레지스터에 저장된 값들을 스택에 저장하는 명령어 입니다. 현재의 레지스터값을 스택에 저장하고 원본 코드로 복구한다음 POPAD를 이용해서 원래의 레지스터 값으로 되돌린 다음 복구한 OEP로 분기합니다. F8을 한번더 눌러보면 PUSHAD 명령어가 실행 되서..