레벨 해킹

 2839, 1/142 회원가입  로그인  
   $Zero
   222.png (245.6 KB), Download : 16     [오른쪽 버튼 눌러 다운 받기]
   FTZ Level11 질문

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



오랜만에 FTZ를 다시 풀어봤는데 예전엔 겪어보지 못한 문제가 생겨 질문드립니다 .

첨부한 이미지 처럼 현재 버퍼내의 NOP(\x90) 의 주소를 공격했음에도 NOP 썰매가 타지질 않습니다.

버퍼의 시작부분을 쉘 코드로 해놓으면 쉘이 떨어지는 반면 NOP썰매를 태워 뒤에 있는 쉘 코드를 실행시키려고하면 자꾸 세그먼트 에러가 뜨네요

이상한 건, ARGV로 전달된 주소를 지정하면 NOP썰매가 잘 타집니다.

공격 주소에 중간을 지정하든 처음을 지정하든 ARGV를 타면 매우 잘 타지는데 왜 이런걸까요?

  Hit : 3747     Date : 2014/06/05 12:11



    
cd80 gdb로 쉘코드부분에 브레이크포인트거셔서 트레이스해보시면
쉘코드 인스트럭션중에 push 부분에서 쉘코드 뒷부분이 덮어써질꺼에요
ret이 실행된 직후의 esp를 생각해보시면 왜그런진 아실꺼구요
쉘코드가 자기자신을 덮어써버리기때문에 쉘코드랑 리턴어드레스 사이를 push하는 바이트만큼 벌리거나
아니면 아예 push에 의해서 덮어씌워지지 않도록 리턴어드레스 다음에 쉘코드를 쓰는방법도 있어요
2014/06/05