$ 리버싱 $/CodeEngn Advance RCE
-
CodeEngn Advance RCE 8$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 20. 11:00
문제를 확인하면 Name이 2글자 라고 합니다. 하지만 2글자를 입력하면 위와 같이 Please Enter More Chars... 라고 출력이 됩니다. 그렇기 때문에 글자수가 몇으로 되어있는지 확인도 하고 2글자도 가능하도록 해보겠습니다. Please Enter More Chars... 문자열로 찾아보겠습니다. 해당 문자열이 포함된 곳의 시작 점을 확인해 보겠습니다. 45BAE8 주소로 가보면 확인할 수 있습니다. 좀 아래로 내려가면 다음과 같이 CMP로 비교하는 구문을 찾아 볼수 있습니다. 3글자 이상이여야 합니다. 그래서 CMP EAX, 2로 바꿔 보겠습니다. 그리고 아래로 좀더 내려보면 CMP EAX, 1E를 확인 할 수 있습니다. 1E = 30 , Serial은 30글자 이상이여야 합니다. 분석..
-
-
CodeEngn Advance RCE 6$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 19. 18:49
해당 문제는 저번 4번 문제와 비슷한 문제 입니다. 문제 파일을 열어보겠습니다. 이런식으로 해서 맨마지막 숫자가 답이 되는 문제입니다. 파일을 한번 확인해 보겠습니다. UPX 언패킹을 해보겠습니다. 올리디버거에 넣고 바로 실행을 하면 안티 디버깅 기법이 적용 되어 있습니다. 이렇게 뜨게 됩니다. IsDuggerPresent 함수에 BP를 걸어서 문제를 해결할 수 있을 것 같습니다. 바로 다음인 40E967 주소에 TEST EAX, EAX 를 이용해서 디버거 툴을 이용해서 분석을 하면 EAX에 1이 들어가는데 EAX값이 1이 되면 JNZ 에서 점프를 해서 위와 같은 문자열을 출력하게 됩니다. 그래서 TEST EAX, EAX를 CMP EAX, EAX로 바꾸면 우회를 할 수 있습니다. 수정하고 파일을 아예 저..
-
CodeEngn Advance RCE 5$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 18. 01:46
문제 파일을 확인해 보겠습니다. 다음과 같이 매우 작은 창이 하나 뜹니다. 1234를 입력하면 다음과 같이 창이 출력됩니다 이제 올리디버거로 열어보겠습니다. 4번 문제와 비슷해 보이지만 Dump가 되지 않습니다. 그래서 함수에 BP를 걸고 분석을 해보겠습니다. 함수를 보면 402476에 vbaStrCmp 함수가 있습니다. 해당함수를 따라가서 확인해 보겠습니다. 입력값은 1234로 하겠습니다. 1234와 677345 비교를 합니다. 들어갈 값이 677345인것 같습니다. 한번 직접넣어서 어떤 결과가 나오는지 확인해 보겠습니다. 이렇게 나오네요! Clear!
-
CodeEngn Advance RCE 4$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 18. 01:16
대부분의 문제들이 Name에 따른 Serial 값을 구하는 문제입니다. 문제 파일을 실행해 보겠습니다. 맞지 않으면 다음과 같은 메세지 창이 나옵니다. Incalid Serial! 이라고 뜹니다. 이제 분석을 해보겠습니다. 분석을 해보려고 하니... 패킹이 되어있는 것 같습니다. 여기서 2가지의 방법이 있습니다. 1. dump를 이용해서 언패킹후에 문제풀기! 2. 그냥 패킹한 상태에서 함수 bp 걸고 풀기! 두가지 방법을 전부 소개해 드리겠습니다. 1번째 방법! 먼저 실행을 하고 f8을 한번 누르면 다음과 같은 화면이 뜹니다. 4011C2에서 BP걸고 루프를 빠져 나와서 F8 을 한번더 누르면 다음과 같은 곳으로 가게됩니다. 여기가 OEP 인것 같습니다. 여기에서 dump를 떠보겠습니다. 위와 같이 Re..
-
CodeEngn Advance RCE 3$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 17. 23:37
문제 파일이 어떤파일인지 한번 열어 보겠습니다. 어셈블리로 컴파일이 되어있네요. 실행을 한번 해보겠습니다. 저번에 푼거 처럼 CodeEngn일때 Serial 값을 찾는 문제 인것 같습니다. 올리디버거를 이용해서 분석해 보겠습니다. 해당 파일을 열어보면 401000주소에서 시작하는 것을 확인 할 수 있습니다. 해당 프로그램에서 입력을 받는 함수인 GetDlgItemTextA 함수를 찾아보겠습니다. 401120주소에 GetDlgItemTextA 함수가 있었습니다. BP를 걸고 실행을 해보면 다음과 같은 창이 나옵니다. Name... 에는 CodeEngn Serial... 에는 1234 를 넣겠습니다. 그리고 분기점을 보면 다음과 같습니다. CMP EAX,3 명령어를 보면 3이랑 EAX를 비교하는데 EAX는 ..
-
CodeEngn Advance RCE 2$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 16. 14:31
이번 파일은 왠지 모를 오류(?) 때문에 XP에서 실습을 해보겠습니다. 문제 파일을 한번 확인해 보겠습니다. 이대로 비밀번호를 맞추면 되는 문제 같습니다. 비밀번호를 입력하면 바로 꺼집니다. 아마 틀리면 바로 꺼지는 것 같아요 이제 한번 분석을 해보도록 하겠습니다. main의 첫 시작 부분은 401000입니다. 먼저 dll부터 전부 Import를 하는 것 같습니다. dll import가 끝나는 주소를 한번 확인해 보겠습니다. 401165에서 시작이 되고 쭉 아래로 내려보면 다음과 같이 입력을 받습니다. 그리고 좀 내려가 보면 루프 도는 구간이 있습니다. 여기서는 4012EB에서 받은 64라는 값이 저 반복 구문횟수 입니다. 큰 의미는 없는 것 같습니다. 큰 의미가 있는 의미는 아닌거 같아서 넘어가고 쭉가..
-
CodeEngn Advance RCE 1$ 리버싱 $/CodeEngn Advance RCE 2019. 7. 16. 14:30
문제 파일을 열어보겠습니다. 이런 창이 뜨고 약 13초? 있다가 꺼지는 느낌? 입니다. 먼저 패킹이 되어있는지 한번 확인해 보죠 !ㅎ UPX로 패킹이 되어있습니다. 그리고 이제 확인해 보겠습니다. 먼저 올리디버거로 열어보면 다음과 같습니다. 위처럼 Autoit script가 뜨는 거로 보아 안티 디버깅이 걸려있는것 같습니다. 안티 디버깅 함수중에서 찾아보니 IsDebuggerPresent 함수를 찾아 가봅시다. 하나씩 내려가 보면 결국에 바로 밑인 40E967에서 TEST EAX, EAX 로인해서 JNZ에서 분기를 하게 되서 4338DE로 가게되고 해당 주소에서 위의 메시지 박스가 생성됩니다. 그래서 40E967주소에 있는 TEST EAX, EAX를 CMP EAX, EAX로 변경을 해서 분기를 피해보겠습..