PADOCON 2010 hand-ray 리버싱 풀이 3rd

2010/02/28 23:48

PADOCON 2010 핸드레이 세 번째 문제는 두 번째 문제보다 더 많은 삽질을 요구했습니다. 예선전 문제였던 ddanjin과 유형이 같은데요, 차이라 하면은 핸드레이로 풀어야 한다는 것 뿐이네요...

문제

다음 코드에서 입력코드가 k1n0TheBest 일 때 출력될 값은 무엇인가?

00401000  /$  83EC 70                 SUB ESP,70
00401003 |. A1 34604000 MOV EAX,DWORD PTR DS:[406034]
00401008 |. 8B0D 38604000 MOV ECX,DWORD PTR DS:[406038]
0040100E |. 8B15 3C604000 MOV EDX,DWORD PTR DS:[40603C]
00401014 |. 894424 0C MOV DWORD PTR SS:[ESP+C],EAX
00401018 |. 894C24 10 MOV DWORD PTR SS:[ESP+10],ECX
0040101C |. 33C0 XOR EAX,EAX
0040101E |. 33C9 XOR ECX,ECX
00401020 |. 895424 14 MOV DWORD PTR SS:[ESP+14],EDX
00401024 |. 894C24 01 MOV DWORD PTR SS:[ESP+1],ECX
00401028 |. BA 0C000000 MOV EDX,0C
0040102D |. 894C24 05 MOV DWORD PTR SS:[ESP+5],ECX
00401031 |. 895424 30 MOV DWORD PTR SS:[ESP+30],EDX
00401035 |. 66:894C24 09 MOV WORD PTR SS:[ESP+9],CX
0040103A |. 895424 3C MOV DWORD PTR SS:[ESP+3C],EDX
0040103E |. B9 09000000 MOV ECX,9
00401043 |. BA 01000000 MOV EDX,1
00401048 |. 884424 00 MOV BYTE PTR SS:[ESP],AL
0040104C |. C74424 18 02000000 MOV DWORD PTR SS:[ESP+18],2
00401054 |. C74424 1C 0A000000 MOV DWORD PTR SS:[ESP+1C],0A
0040105C |. C74424 20 04000000 MOV DWORD PTR SS:[ESP+20],4
00401064 |. C74424 24 08000000 MOV DWORD PTR SS:[ESP+24],8
0040106C |. C74424 28 0B000000 MOV DWORD PTR SS:[ESP+28],0B
00401074 |. C74424 2C 05000000 MOV DWORD PTR SS:[ESP+2C],5
0040107C |. 894C24 34 MOV DWORD PTR SS:[ESP+34],ECX
00401080 |. C74424 38 0F000000 MOV DWORD PTR SS:[ESP+38],0F
00401088 |. 894424 40 MOV DWORD PTR SS:[ESP+40],EAX
0040108C |. C74424 44 04000000 MOV DWORD PTR SS:[ESP+44],4
00401094 |. C74424 48 02000000 MOV DWORD PTR SS:[ESP+48],2
0040109C |. C74424 4C 03000000 MOV DWORD PTR SS:[ESP+4C],3
004010A4 |. 895424 50 MOV DWORD PTR SS:[ESP+50],EDX
004010A8 |. 894C24 54 MOV DWORD PTR SS:[ESP+54],ECX
004010AC |. C74424 58 06000000 MOV DWORD PTR SS:[ESP+58],6
004010B4 |. C74424 5C 08000000 MOV DWORD PTR SS:[ESP+5C],8
004010BC |. 894C24 60 MOV DWORD PTR SS:[ESP+60],ECX
004010C0 |. C74424 64 05000000 MOV DWORD PTR SS:[ESP+64],5
004010C8 |. 894C24 68 MOV DWORD PTR SS:[ESP+68],ECX
004010CC |. 895424 6C MOV DWORD PTR SS:[ESP+6C],EDX
004010D0 |> 8B5484 44 /MOV EDX,DWORD PTR SS:[ESP+EAX*4+44]
004010D4 |. 8B4C84 18 |MOV ECX,DWORD PTR SS:[ESP+EAX*4+18]
004010D8 |. 33CA |XOR ECX,EDX
004010DA |. 894C84 18 |MOV DWORD PTR SS:[ESP+EAX*4+18],ECX
004010DE |. 40 |INC EAX
004010DF |. 8A4C0C 0C |MOV CL,BYTE PTR SS:[ESP+ECX+C]
004010E3 |. 83F8 0B |CMP EAX,0B
004010E6 |. 884C04 FF |MOV BYTE PTR SS:[ESP+EAX-1],CL
004010EA |.^ 7C E4 \JL SHORT Q3.004010D0
004010EC |. 8D5424 00 LEA EDX,DWORD PTR SS:[ESP]
004010F0 |. 52 PUSH EDX
004010F1 |. 68 30604000 PUSH Q3.00406030 ; ASCII "%s"
004010F6 |. E8 15000000 CALL Q3.00401110 ; printf
004010FB |. 33C0 XOR EAX,EAX
004010FD |. 83C4 78 ADD ESP,78
00401100 \. C3 RETN


방금 전 얘기했듯이 예선전의 ddanjin과 같은 유형입니다. PADOCON 2010 CTF 예선 문제를 보신 분이라면 대충 눈치 채시겠죠? 문제를 푸는 요령은 핸드레이 두 번째 문제와 같습니다.

  • Encoding Routine이 어디인가?
  • Encoding Routine 직전의 스택은 어떤 모습인가?
  • Encoding Routine 직전의 레지스터의 값은 무엇인가?
  • ASCII 테이블

풀이

여기서부터 풀이입니다. [열기]



참고 문헌

Intel Instruction Set pages :: http://www3.itu.edu.tr/~kesgin/mul06/intel/index.html
ASCII printable characters :: http://en.wikipedia.org/wiki/ascii#asc ··· aracters
크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 #2. 지피지기, 백전불패/리버스 엔지니어링 , , , , , ,

Trackback Address:http://hisjournal.net/blog/trackback/313
  1. ㅎㄷㄷ.......핸드리버싱은 정말 무서워요..... 물론 내용은 안봤습니다(무서워서...)

  2. Blog Icon
    6l4ck3y3

    아뇨 오히려 핸드레이 리버싱이 더 쉽고 재미나요. 특히, 기차 타고 가면서 핸드레이 리버싱하는 낭만이 있죠.

  3. 제가 버스를 타서 핸드레이 디컴파일 작업을 할수 없었던 것이었군요......
    갑자기 제 고향에 기차가 없다는게 슬퍼집니다..

  4. Blog Icon
    sfhexer

    안녕하세요 SecurityFirst의 대표입니다^^
    재미로 만들어봤던 핸드리버싱이었는데
    멋지게풀이를해주셔서 감사드려요^^
    다음에한번만나뵐 기회가있겟지요?ㅋㅋ

  5. Blog Icon
    6l4ck3y3

    반갑습니다. 덕분에 재밌는 문제도 풀고 USB도 받고... 고맙습니다.

[로그인][오픈아이디란?]