인프런 커뮤니티 질문&답변

rfkjh22님의 프로필 이미지

작성한 질문수

해킹 대회를 위한 시스템 해킹 프로토스타 완벽 풀이집

쉘코드 생성, 리눅스 어태치 방법

어태치 리턴주소

21.07.13 08:31 작성

·

245

0

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

답변 1

0

gasbugs님의 프로필 이미지

2021. 07. 14. 17:11

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

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

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

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

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

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

감사합니다.

rfkjh22님의 프로필 이미지

작성한 질문수

질문하기