쉘코드 뒤에 여유 공간이 필요한 경우 by ORANG

2016. 9. 30. 17:27·IT기술 관련/리눅스
반응형

출처: http://orang.tistory.com/category/System%20Hacking/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%ED%95%B4%ED%82%B9%20%EA%B3%B5%EB%B6%80


FTZ나 LOB같은 문제 풀이를 하다보면..

[nop]... + [셸코드] + [SFP] + [RET] 는 세그먼트 오류가 나고,

[셸코드] + [nop]... + [SFP] + [RET] 는 공격에 성공하는 경우 를 발견할 수 있습니다.

 

1번째 방법은 안되고, 2번째 방법은 되는 차이를 간단하게 보자면..

1번째 방법의 문제를 간단한 메모리로 보겠습니다.



RET에 함수 주소가 들어오기 전 스택입니다.

이상태에서 leave와 ret 명령어가 실행되는 상황을 통해 보겠습니다.

 

leave 명령어는

mov esp, ebp

pop ebp

esp를 ebp로 옮기고(스택을 정리해주고), 이전 함수의 ebp(SFP)를 pop을 통해 다시 ebp에 저장합니다.

pop 되었으니 esp는 RET를 가리킵니다.

다시 스택을 보면..



이제 ret가 실행됩니다.

ret 명령어는

pop eip

jmp eip

현재 eip 다음에 실행될 명령어를 eip 레지스터에 저장하고 eip 주소로 점프합니다.

eip의 주소(nop+shellcode)로 점프한 후, esp는 RET+4 지점을 가리키고 있습니다.

여기서 문제가 발생합니다

스택을 보면.. 



shellcode가 실행되기 시작합니다. push명령어도 셸코드에 포함되어 있겠죠?

push 명령어가 실행될 때마다 현재 esp로부터 4바이트씩 덮어쓰며 esp가 낮은 메모리 주소 방향으로 이동합니다.

결론적으로 말하면 shellcode와 RET 사이에 충분한 여유공간이 없을 경우,

 esp가 shellcode를 덮어쓰게되며 세그먼트 오류가 발생하게 됩니다. 

반응형
저작자표시 (새창열림)

'IT기술 관련 > 리눅스' 카테고리의 다른 글

linux 환경에서의 메모리 보호기법을 알아보자(2)  (0) 2016.09.30
linux 환경에서의 메모리 보호기법을 알아보자(1)  (0) 2016.09.30
gdb 자주 쓰이는 명령어들 정리  (0) 2016.09.29
리눅스 각 기본계정별 설명입니다.  (0) 2016.09.27
/bin/false, /sbin/nologin 의 차이점  (0) 2016.09.27
'IT기술 관련/리눅스' 카테고리의 다른 글
  • linux 환경에서의 메모리 보호기법을 알아보자(2)
  • linux 환경에서의 메모리 보호기법을 알아보자(1)
  • gdb 자주 쓰이는 명령어들 정리
  • 리눅스 각 기본계정별 설명입니다.
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    대통령
    맛집
    복리후생
    무역전쟁
    런치
    수제버거존맛
    돈까스
    이재곧죽습니다
    상호관세
    쥬쥬랜드
    AWS
    수제버거
    판교역
    유니티
    점심
    판교맛집
    판교
    마케팅
    보안가이드
    수제버거맛집
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
쉘코드 뒤에 여유 공간이 필요한 경우 by ORANG
상단으로

티스토리툴바