본문 바로가기

Code Engn - Basic 10 RCE UPX 패킹된건줄 알고 많이 헤맸다.. 디버깅보다 언패킹이 어려운 느낌 더보기
Code Engn - Basic 09 RCE ( 출처 : http://muhan56.tistory.com/80 ) 더보기
Code Engn - Basic 08 RCE UPX 패킹의 특징 -> pushad ~ popad로 EP코드가 둘러쌓여 있고, OEP 코드는 popad 이후 점프하는 주소가 된다. 더보기
Code Engn - Basic 07 RCE 처음에는 문제 지문에 나온 내용이 무슨 말인지 몰랐었는데, GetVolumeInformation() 함수에 대한 내용을 찾아보니 대충 알 것 같다.GetVolumeInformation()을 통해서 2번째 인자로 전달되는 0x40225C(여기에 하드디스크 이름이 저장된다.)가아래 명령어들이 실행되면서 문자열이 추가로 덧붙여지거나, 수정된다 -> 이게 시리얼이 됨. 먼저 C드라이브 이름을 바꿔주고, 문자열 비교 직전 시리얼의 내용을 확인해보면.. 그리고 해당 시리얼을 넣어보면 성공 더보기
Code Engn - Basic 06 RCE UPX로 패킹되어 있다.UPX 특성상 EP코드는 pushad ~ popad로 이루어져 있는데OEP 코드는 popad 이후에 나타나는 JMP 주소가 되므로 먼저 OEP 코드를 찾았다. 이전에 사용했던 툴을 이용해 언패킹한후 실행해보니 아래와 같은 문자열이 나타났다. 문자열이 호출되는 시점을 찾고, 평문으로 들어간 시리얼을 찾았다. 더보기
Code Engn - Basic 05 RCE 이뮤니티 디버거로 뜯어보니 제대로 안보이길래 헥스에디터로 열어보았다.아래와 같이 UPX로 패킹되어있다는 메세지를 보고 unpacking 함. (http://bbolmin.tistory.com/47 참고) "Wrong Serial" 문자열이 호출되는 시점을 찾아보니 Serial 정보가 평문으로 들어있었다. 입력해보니 정답 더보기
Code Engn - Basic 04 RCE 실행해보니 계속해서 "디버깅 당함" 이라고 출력되었다. 이뮤니티 디버거를 통해서 확인하다보니 딱 봐도 의심스러운 "IsDebuggerPresent"라는 이름의 함수를 발견했다. 아래에 호출되는 0x408190은 문자열 출력부분이고, 0x431024와 0x43101c는 디버깅 여부에 대한 문자열인 듯 하다. JE를 JMP로 바꿔서 우회하였다. (디버깅 중일 때, IsDebuggerPresent()의 반환값은 1 이다.) 더보기
Code Engn - Basic 03 RCE 실행해보니 저런 오류가 나길래 MSVBVM50.DLL을 따로 설치했다. 아무 값이나 넣어보니 틀렸다는 문자열이 나타났길래 이뮤니티 디버거에서 문자열을 찾았다. 에러 문자열이 호출되는 시점을 찾아보니 아래와 같았다. 위아래로 좀더 살펴보니 Key값으로 보이는 문자열과, 아마도 문자열을 비교하는 함수..를 호출하는 부분이 존재했다.확인해보니 맞았다. 더보기
Code Engn - Basic 02 RCE 파일이 손상되어 있어, 실행자체가 안되는 상황.일단 헥스에디터로 확인해봤는데, (처음엔 봐놓고도 key인줄 몰랐다..) 보니까 key가 존재했다. 코드 엔진 사이트에 Auth를 확인하는 부분이 바로 확인되지 않아서 쫌 그랬는데.. 찾아보니 CodeEngn Basic RCE Auth 인증기[출처] CodeEngn Basic RCE Auth 인증기|작성자 해피용 ( ( http://blog.naver.com/93immm/220196816080 ) -> 고맙게도 어떤분이 Auth 인증기를 만들어두심 더보기
Code Engn - Basic 01 RCE C드라이브를 CD-ROM 형태로 인식하게끔 만들면 되는 문제.GetDriveTypeA 함수를 통해 값을 얻으므로, 반환값을 조작하면 된다. 함수의 반환값은 EAX를 통해 전달되므로, GetDriveTypeA 의 반환값은 3이 된다.(하드디스크이므로) GetDriveTypeA 함수의 반환값을 찾아보니 아래와 같았다.CD-ROM의 경우 5이므로, EAX를 5로 조작하여 통과 (다른 방법을 이용해도 CMP-JE 조건만 맞추면 된다.) 더보기