CodeEngn Challenge

Checkin List

최근 인증 기록을 확인할 수 있습니다. 공개 별칭과 코멘트만 표시됩니다.

Public record

최근 인증 페이지당 50건

24,520건의 공개 인증 기록 · 339 / 491 페이지

Checkin timeNameLevelCommentPoint
2015-03-22 17:06:33rosnotAdvance L02-7
2015-03-22 15:45:10ddAdvance L03-9
2015-03-21 19:28:05e32592Basic L09-17
2015-03-21 19:18:52ssin1996Basic L03-5
2015-03-21 19:02:59ssin1996Basic L02-3
2015-03-21 18:49:24ssin1996Basic L01-1
2015-03-21 01:03:25ddddAdvance L02-7
2015-03-20 22:01:25JealousCrypto L01-5
2015-03-20 01:06:09zeee1Basic L09-17
2015-03-19 17:38:52revers3rAdvance L14Advanced L 1431
2015-03-19 00:20:59ethobisBasic L16-31
2015-03-18 23:49:14ethobisBasic L15-29
2015-03-18 22:14:14ethobisBasic L14-27
2015-03-18 21:26:38ethobisBasic L13-25
2015-03-17 21:24:41qqq07216Advance L03-9
2015-03-15 16:45:16symnoisyBasic L11Challenges : Basic 11 Author : abex Korean : OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 English : Find the OEP. Ex) 00401000 / Find the Stolenbyte. Ex) FF35CA204000E84D000000 The solution should be in this format : OEP + Serial Ex ) 00401000FF35CA204000E84D000000 방금전에 풀었던 level 10 문제랑 굉장히 유사하다 단지 패킹이 UPX로 되어있고, stolen byte가 어떤 부분인지 알아낸다는 점이 조금 다르다. 방법은 아까처럼 push AD 부분에서 ESP 부분의 주소에 하드웨어 브레이크를 걸어주고 진입한다. 그렇게되면 아까도 말햇듯이 OEP 로 점프하는 직전 명령어 부분으로 이동한다. OEP 부분에서 잠깐 헤맷는데, OEP 부분에는 stolen byte를 복구해주고나서의 OEP를 적어주어야 한다. jmp부분으로 넘어간뒤에 ctrl+A를 눌러서 어셈블리를 재분석해주면, 패킹이 해제된 데이터들을 확인할 수 있다. stolen byte부분은 messagebox 함수의 파라미터 부분으로, 총 파라미터를 4개를 받는데, 여기서는 파라미터 3개가 OEP로 넘어가기 직전에 선언되어있다 21
2015-03-15 16:24:41symnoisyBasic L10Challenges : Basic 10 Author : ArturDents Korean : OEP를 구한 후 !등록성공!으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 English : After finding the OEP, find the OPCODE of the branch instruction going to the !goodboy routine! The solution should be in this format : OEP + Serial EX) 00400000EB03 해당 파일은 패킹이 되어있다. 맨 처음에 문제를 접햇을때 upx 패킹 방식과 유사한 점을 볼 수 있었다. EP 지점에서 PUSH AD 명령을 사용 하고있어서 하드웨어 브레이크를 사용한다면 쉽게 언패킹 할수 있다 생각하여 바로 시행했다. push AD 명령은 현재 상태에서의 모든 범용레지스터들을 스택에 쌓아놓는 명령어이다. upx 와 마찬가지로 esp 주소 부분에 하드웨어 브레이크를 걸고 넘어가면, 압축을 해제하고, OEP로 넘어가기 직전의 주소까지 한번에 접근 할 수 있다. OEP에 접근하고 나선 문제에서 물어보는것이 분기점의 Opcode 이므로, 해당 문자열을 찾아서,분기하는 부분의 opcode를 찾아 넣어주면 된다. 19
2015-03-15 11:04:520xBADC0DEBasic L12-23
2015-03-15 05:08:290xBADC0DEBasic L11-21
2015-03-14 21:48:10ethobisBasic L12-23
2015-03-14 18:41:51ethobisBasic L11-21
2015-03-14 18:32:39ethobisBasic L10-19
2015-03-14 18:27:52ethobisBasic L09-17
2015-03-14 18:12:22ethobisBasic L08-15
2015-03-14 18:08:09ethobisBasic L07-13
2015-03-14 18:00:34ethobisBasic L06-11
2015-03-14 17:55:53ethobisBasic L05-9
2015-03-14 17:41:56ethobisBasic L04-7
2015-03-14 17:38:01ethobisBasic L03-5
2015-03-14 17:35:47ethobisBasic L02-3
2015-03-14 17:28:15ethobisBasic L01-1
2015-03-14 15:16:34symnoisyBasic L09Challenges : Basic 09 Author : abex Korean : StolenByte를 구하시오 Ex) 75156A0068352040 English : Find the StolenByte Ex) 75156A0068352040 stolen byte: 패커가 위치를 이동시킨 코드. 보호된 프로그램의 코드 윗부분(보통EP의 몇개의 명령어임) 즉 stolen byte란 EP 진입점에서 빼내온 opcode를 찾으라는 문제같다. 패킹 자체는 upx로 되어있어서 OEP 진입점은 굉장히 쉽게 찾을수 있엇다. 그런데 stolen byte로 인해서 OEP지점에서 바로덤프를 떠버리면 실행이 제대로 되지않는다(왜냐하면, OEP부분에서 처리해줘야할 일부를 패킹부분에다가 집어 넣어 주엇기때이다) 즉, 덤프를 뜨기 이전에 stolen byte를 OEP 부분에 추가해주고, 마지막 jmp 부분(UPX는 이부분이 OEP로 점프하는 부분이므로)을 stolen byte를 추가해준 시작부분으로 수정해주고 덤프를떠주면된다. 코드엔진 자체에서 묻는것은 stolen byte 부분이므로 이에 대한 opcode를 이어서 써주면된다. 17
2015-03-14 14:08:06TempaBasic L03-5
2015-03-14 13:24:17tempaBasic L02-3
2015-03-14 11:58:08tempaBasic L01aa1
2015-03-14 11:34:3212Basic L01-1
2015-03-13 14:54:53symnoisyBasic L08Challenges : Basic 08 Author : Rekenmachine Korean : OEP를 구하시오 Ex) 00400000 English : Find the OEP Ex) 00400000 OEP 구하는 문제인데 UPX로 패킹되어 있어서 엄청나게 간단하게 구해버렷다 UPX 특징이 맨마지막 JMP부분에서 압축을 해제한 실제 데이터 부분으로 jmp를 하기때문에 맨 마지막 점프부분을 따라가면 OEP 부분이 나오게된다 어떻게 UPX 패킹인지 알앗냐면 , PE View 로 먼저 열어보고 들어갓는데 섹션부분에서 upx패킹되어잇는 프로그램들의 특징을 발견햇다(뭐 원래는 peid를 써서 패킹을 확인하지만) 15
2015-03-13 14:41:26symnoisyBasic L07Challenges : Basic 07 Author : abex Korean : 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 !어떤것!으로 변경되는가 English : Assuming the drive name of C is CodeEngn, what does CodeEngn transform into in the process of the serial construction 문제에서 어떤 api 함수를 건드려야 할지는 module에 나열된 api 함수들을 보고 감이왔는데,, 어떤식으로 바꿔야 할지 몰라서 헤매다가 불러오는 주소에 대한값을 바꿔줘야 한다는 것을 꺠닫고 바로실행. . 근데 이부분(40225C)는 뒤에 흐름을 살펴보니 원래 이프로그램의 문제인 serial 키를 뽑아내는 부분의 일부이다. 계속해서 뒤를 보면 이부분(40225C)부분 부터 네자리를 Dl(현재 2가 들어있다)을 카운터로 삼아서 암호화를 수행한다. 즉 CodeEngn에서의 Code 부분에대한 암호화(?라기보다는 문자를 두칸씩 이동한다)를 수행한다 따라서 이문제에서 원하는 답을 추측할 수 있엇고, 원래 이문제 자체의 키값은 아래와 같다 13
2015-03-12 19:43:45zeee1Basic L08-15
2015-03-11 17:24:30bblackeyeBasic L06-11
2015-03-11 16:41:21e32592Basic L11인증 21
2015-03-11 16:18:10e32592Basic L10이문제는 OEP코드와 성공메세지를 출력하는 분기점을 찾아 OPCODE 를 구하면 된다. 이제 성공메세지를 출력하는 분기점을 찾아서 OPCODE를 구해보자. 찾았다. 끝 19
2015-03-11 15:56:50zeee1Basic L07-13
2015-03-10 21:38:29bblackeyeBasic L05-9
2015-03-10 20:50:21zeee1Basic L06-11
2015-03-10 20:36:25bblackeyeBasic L04-7
2015-03-10 19:39:18bblackeyeBasic L03-5
2015-03-10 19:24:05bblackeyeBasic L02-3
2015-03-10 19:09:42bblackeyeBasic L01-1
2015-03-10 10:02:24inhackAdvance L05b13