본문 바로가기

wargame/IO smash the stack

level1을 풀다가 생긴 의문점에 대한 분석

1. 메인함수에서 함수를 불러올때 인자를 주지않았는데 어떻게 함수가 정상실행 되는가?


2.YouWin함수는 어떻게 쉘을 실행시키는가


3.fscanf 역추적으로 풀기

fscanf가 어떤것인지는 알고 있었지만 레페런스를 찾아보지않고 처음에 풀려는 고집떄메, 역추적으로 문제를 풀었다.


0804809f <fscanf>:

 804809f:       81 ec 00 10 00 00       sub    $0x1000,%esp

 80480a5:       b8 03 00 00 00          mov    $0x3,%eax    //read 시스템콜

 80480aa:       bb 00 00 00 00          mov    $0x0,%ebx    // 0번 fd (stdin)

 80480af:       89 e1                   mov    %esp,%ecx

 80480b1:       ba 00 10 00 00          mov    $0x1000,%edx

 80480b6:       cd 80                   int    $0x80

 80480b8:       89 e6                   mov    %esp,%esi     //받은 값의 주소를 esi에

 80480ba:       31 db                   xor    %ebx,%ebx     //0으로 초기화

 

080480bc <skipwhite>:

 80480bc:       31 c0                   xor    %eax,%eax     //0으로 초기화

 80480be:       ac                      lods   %ds:(%esi),%al  //esi를 1바이트 esi가 가리키는 값을 al에 옮김

 80480bf:       3c 20                   cmp    $0x20,%al     //스페이스인지 검사

 80480c1:       74 f9                   je     80480bc <skipwhite>   //스페이스라면 다시 skipwhite

 

080480c3 <doit>:

 80480c3:       2c 30                   sub    $0x30,%al //

 80480c5:       3c 09                   cmp    $0x9,%al   //al이 0x9보다 크면

 80480c7:       77 0a                   ja     80480d3 <exitscanf>  //점프

 80480c9:       6b db 0a                imul   $0xa,%ebx,%ebx   //ebx * 0xa

 80480cc:       01 c3                   add    %eax,%ebx     // ebx = ebx + eax

 80480ce:       31 c0                   xor    %eax,%eax     //0으로 초기화

 80480d0:       ac                      lods   %ds:(%esi),%al //다음값

 80480d1:       eb f0                   jmp    80480c3 <doit> 

 

080480d3 <exitscanf>:

 80480d3:       89 d8                   mov    %ebx,%eax

 80480d5:       81 c4 00 10 00 00       add    $0x1000,%esp

 80480db:       c3                      ret

 

 

Summary:

거꾸로 따라가면 편하다.

 

hgvbmkQIHavkGg5wyk

'wargame > IO smash the stack' 카테고리의 다른 글

level4  (0) 2014.05.27
level3  (0) 2014.05.27
level2_alt  (0) 2014.05.27
level2  (0) 2014.05.12
level1  (0) 2014.05.12