왜 seg fault가 뜨는지 잘 모르겠습니다.

안녕하세요. 이 문제에서는 아래 vmmap 사진과 같이 0x7ffff7ff6000에 rwx 권한을 모두 주고 있는데요,
image.png
또 소스코드에서 arbitrary address에 write할 수 있게 해주기 때문에 0x7ffff7ff6000 위치에 shellcode를 작성하고 실행해서 shell을 얻으려 했습니다.

아래에서 보시는 바와 같이 gdb를 켜고 0x7ffff7ff6000에 아무 값(0x12345)을 집어 넣으면 잘 들어가는 것도 확인할 수 있었고요.
image.png

그런데 이상하게 gdb를 사용하지 않고 아래처럼 그냥 local 환경에서 executable을 실행해서 같은 input을 주면 segmentation fault가 발생합니다.. gdb랑 무슨 차이가 있어서 이렇게 다르게 작동하는건지 잘 이해가 되지 않아 질문을 올립니다. (140,737,354,096,640 = 0x7ffff7ff6000)
image.png

#pwnable
작성자 정보
답변 1
avatar
Dyo
CTF First Place

gdb에서는 ASLR이 기본적으로 꺼지고, 고정된 주소를 가지기 때문에 그런게 아닌가 싶네요

2022.09.05. 16:30
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기