• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

어태치 리턴주소

21.07.13 08:31 작성 조회수 200

0

쉘코드생성, 리눅스 어태치 실습을 하던도중 궁금한점이 생겨  질문을 합니다, 왼쪽은 pause()후 gdb를이용하여 어태치한 결과이고 오른쪽은 일반적으로 #gdb ./stack5 를 한것입니다. 둘은 같은 프로그램이고 ASLR옵션도 꺼준 상태인데 return 주소가 다르게 나옵니다.  왜 이렇게 나오는지 알 수 있을까요? pwn 을 사용하게되면 이렇게 되는것인가요?? return 주소가 변경되는 다른 이유는 어떤것이 있나오?

답변 1

답변을 작성해보세요.

0

gasbugs님의 프로필

gasbugs

2021.07.14

안녕하세요 저도 관련된 부분에 대해 분석해보지는 않아서 몇 가지 찾아보았습니다.

찾아보니 좋은 글이 있어서 첨부드립니다.

여기에서 스택 주소에 영향을 주는 데는 다음과 같은 사항이 있다고 합니다.

- gdb는 절대 경로 이름으로 프로그램을 호출하므로 argv 배열이 더 큽니다.

- gdb는 두 개의 환경 변수를 설정(또는 이 경우 추가)합니다. 이것은 readline/shell.c:sh_set_lines_and_columns()에서 수행됩니다. 따라서 환경 어레이가 더 큽니다.

참고 URL: https://stackoverflow.com/questions/32771657/gdb-showing-different-address-than-in-code

감사합니다.