CodeEngn Challenge
Checkin List
최근 인증 기록을 확인할 수 있습니다. 공개 별칭과 코멘트만 표시됩니다.
Public record
최근 인증 페이지당 50건
24,520건의 공개 인증 기록 · 340 / 491 페이지
| Checkin time | Name | Level | Comment | Point |
|---|---|---|---|---|
| 2015-03-10 09:55:35 | inhack | Advance L04 | b | 11 |
| 2015-03-09 01:59:27 | soohyun0504 | Advance L09 | - | 21 |
| 2015-03-06 18:06:28 | revers3r | Advance L10 | 10 | 23 |
| 2015-03-05 22:36:29 | revers3r | Advance L09 | 짱짱 | 21 |
| 2015-03-05 21:08:43 | kang010330 | Advance L05 | - | 13 |
| 2015-03-05 14:53:05 | 677345 | Advance L05 | 677345 | 13 |
| 2015-03-05 14:44:16 | 3265754874 | Advance L03 | 3265754874 | 9 |
| 2015-03-05 14:16:30 | shortcode | Crypto L02 | - | 7 |
| 2015-03-05 13:49:39 | godkad | Crypto L01 | - | 5 |
| 2015-03-04 22:59:51 | asdasdasdasd | Basic L11 | asdasdas | 21 |
| 2015-03-04 20:03:46 | symnoisy | Basic L06 | Challenges : Basic 06 Author : Raz0r Korean : Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD English : Unpack, and find the serial. The solution should be in this format : OEP + Serial Ex) 00400000PASSWORD OEP 를 구해주고 serial 또한 구해줘야 하는 문제다. 문제에서 따로 특별한 점은 찾지 못햇지만, UPX로 패킹이 되어있고, 언패킹한후 들어가보면 키값을 비교하는 API 부분이 뭉개져있다 . 따라서 접근할때 실패했을때 나타나는 string인 wrong serial! 이라는 string 을 흰트로 하여 거슬로 올라가 해당 API 를 찾을 수 있었다 . (며칠전에 자다가 풀다가 break 걸어논 부분 부터 다시 이어서한거라 중간에 접근했던 방법이 자세히 기억이 나지를 않는다 ㅡㅡ ;; ) 이 API자체는 compare하는 api 로 param 1,2를 비교하게되는데, 스택의 원본 serial키 값과 내가 넣은 input 값을 비교하게 된다 해당 api 안으로 들어가보면 , 암호화 루틴이 나오게된다. input으로 넣어주면 성공. flag 값은 OEP + Serial 값이다 | 11 |
| 2015-03-04 15:49:26 | asdf | Basic L20 | - | 39 |
| 2015-03-04 04:30:13 | soohyun0504 | Advance L05 | - | 13 |
| 2015-03-04 04:09:19 | soohyun0504 | Advance L04 | - | 11 |
| 2015-03-03 23:34:30 | ojsung7 | Basic L01 | - | 1 |
| 2015-03-03 06:21:11 | soohyun0504 | Advance L03 | - | 9 |
| 2015-03-03 05:55:56 | soohyun0504 | Advance L02 | - | 7 |
| 2015-03-03 03:10:52 | symnoisy | Basic L05 | Challenges : Basic 05 Author : Acid Bytes [CFF] Korean : 이 프로그램의 등록키는 무엇인가 English : The registration key of this program is? 문제는 굉장히 쉽게 풀었다. UPX 패킹이 되있으므로, 유틸을 사용해서 언팩을 해주던가, 가내수공업으로 언팩을 해주는 방법 두가지가 있겠다. 따로 설명은 안하겟고, 맨마지막 jmp 부분에 브레이크를 걸어주고 덤프를 뜬다던가, UPX 의시작점 부분에서 ESP 의값을 하드웨어 브레이크를 걸어주고 덤프를 떠준다. 유틸사용이야 말해봐야 입아플거같고, 이프로그램은 키값과 동시에 Name 부분의 란이 따로 존재한다. UPX를 언패킹해주면,시리얼 키를 EDX 레지스터에 넣고 CMP하는 구문이있다. 따로 브레이크를 걸필요없이, 노출되어있어서 쉽게 찾을수 있었다. 코드엔진에서 물어보는 키값은 이것(등록키)이지만, 원래의 본프로그램의 경우, 키값을 맞춤과 동시에 그에 맞는 name 값을 input으로 넣어줘야 한다. serial키 부분보다는 name 부분에 좀더 신경을 쓴 프로그램 같다 우선, 해당 프로그램이 어떤 루틴을 갖는지 분석을 해보면(UPX를 언패킹 해서 OEP에 접근했을때 부터의 이야기이다) 1)name의 input이 있는지 없는지 에 따라 분기한다 2) serial 값이 있는지 없는지에 따라 또한 분기한다. 3)Register User 부분인데 이 아래에 존재하는 CALL 0x00403B2C에 암호화 루틴이 존재한다 4)name의 input 값이 맞는지 아닌지에따라 성공 실패 분기문이 갈린다. 5)serial 값이 맞는지 아닌지에 따라 성공 실패 분기 문이 갈린다 주석을 첨가한 약간의 코드를 첨부한다.(name 루틴부분을 분석할까 했는데 귀찮아서 안함 ㅡㅡ;나중에 심심할때 해보겟음 ) | 9 |
| 2015-03-03 02:29:49 | soohyun0504 | Basic L20 | - | 39 |
| 2015-03-03 02:29:10 | symnoisy | Basic L04 | Challenges : Basic 04 Author : CodeEngn Korean : 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 English : This program can detect debuggers. Find out the name of the debugger detecting function the program uses. 원래 알고 있는 함수이지만, 확실한지 검증해보기 위해서 프로그램을 실행시킨뒤 확인해보았다. intermodular call 부분을 확인하다보면, 다음과 같은 API 를 발견할 수 있다 딱히 시간을 쓸 필요는 없는 문제였다. | 7 |
| 2015-03-02 23:32:56 | soohyun0504 | Basic L19 | - | 37 |
| 2015-03-02 05:42:45 | soohyun0504 | Basic L18 | - | 35 |
| 2015-03-02 04:56:36 | soohyun0504 | Basic L17 | - | 33 |
| 2015-03-02 02:58:18 | soohyun0504 | Basic L16 | - | 31 |
| 2015-03-02 02:42:55 | soohyun0504 | Basic L15 | - | 29 |
| 2015-03-02 02:06:41 | soohyun0504 | Basic L14 | - | 27 |
| 2015-03-02 00:06:42 | soohyun0504 | Basic L13 | - | 25 |
| 2015-03-01 23:33:24 | soohyun0504 | Basic L12 | - | 23 |
| 2015-03-01 20:31:57 | soohyun0504 | Basic L11 | - | 21 |
| 2015-03-01 19:23:02 | e32592 | Basic L08 | 인증 | 15 |
| 2015-03-01 12:07:45 | e32592 | Basic L06 | 인증합니다. | 11 |
| 2015-03-01 04:55:53 | soohyun0504 | Basic L09 | - | 17 |
| 2015-02-28 23:21:37 | soohyun0504 | Basic L08 | - | 15 |
| 2015-02-28 23:03:28 | soohyun0504 | Basic L07 | - | 13 |
| 2015-02-28 22:28:36 | soohyun0504 | Basic L06 | - | 11 |
| 2015-02-28 21:03:27 | soohyun0504 | Basic L05 | - | 9 |
| 2015-02-28 20:03:33 | soohyun0504 | Basic L04 | - | 7 |
| 2015-02-27 21:48:35 | K3is3r | Crypto L02 | crypto02 | 7 |
| 2015-02-27 21:28:11 | INSECT.B | Malware L01 | - | 5 |
| 2015-02-27 02:11:26 | symnoisy | Basic L03 | 맨처음에 함수 이름물어보길래 그냥 strcmp쓰면되는줄 알았는데 알고보니 밑에 실행파일이있다. 실행파일을 열어보면 crackme 문제와 비슷하게 키값을 인증하는 문제이다. 아마도 흰트를 아래와 같이 준 이유는 해당 함수에 브레이크를 걸라고 저렇게 준거같다. strcmp 함수에 브레이크를 걸어주고 run 해준뒤, 임의의 값을 넣어준다. (왜냐하면,strcmp() 함수자체가 , 파라미터 1과 파라미터 2 의값을 비교해서 true false를 판별하기때문에, 내가 임의의 값을 넣어준다면, 원래 비교하는 키값을 얻을수 있기 때문이다) 따라서 다음과 같은 결과를 얻을 수있다. 키값은 삭제 했다. 결과적으로 물어본 vba에서의 문자열 비교함수는 위와 같다 | 5 |
| 2015-02-27 01:44:47 | symnoisy | Basic L02 | 문제 2번의 경우도 별내용은 없엇고,실행 파일을 실행해봐도 별다른 특징은 찾을수 없엇지만, 디버거를 붙여보려 했지만, 디버거가 읽어 오지 못하는 것으로 보아, pe헤더에 문제가 있을것으로 예상했다. 따라서, PEView를 이용해서 PE를 보아하니, IMAGE_DOS_HEADER는 보이나, 하위 디렉터리가 없엇다. pe 에서 장난질쳐논것이 분명하고 PE에서 바이너리를 보아하니, Crackme#1 파일을 가지고 장난질 쳐논것 같다. 키값은 PEview를 키고, Crackme#1문제에서 MessageBox()가 호출하는 문자열 뒷부분에 존재한다. | 3 |
| 2015-02-27 01:28:21 | symnoisy | Basic L01 | MSDN에서 GetDriveType() API를 검색해봣는데, 리턴값이 5인경우 CD-ROM을 뜻한다 | 1 |
| 2015-02-26 18:15:33 | K3is3r | Basic L19 | 基础19 | 37 |
| 2015-02-26 18:15:02 | K3is3r | Basic L17 | 基础17 | 33 |
| 2015-02-26 18:14:08 | K3is3r | Basic L09 | 基础9 | 17 |
| 2015-02-26 18:08:52 | K3is3r | Basic L15 | 基础15 | 29 |
| 2015-02-26 18:08:05 | K3is3r | Basic L13 | 基础13 | 25 |
| 2015-02-26 18:06:41 | K3is3r | Basic L12 | 基础12 | 23 |
| 2015-02-26 18:05:59 | K3is3r | Basic L11 | 基础11 | 21 |
| 2015-02-26 18:04:28 | K3is3r | Basic L10 | 基础10 | 19 |