코드 영역이랑 스택 질문
  1. 메모리의 코드 영역은 read-only로 알고 있는데 왜 덮어쓸 수 있나요? (동적디버깅하면 할 수 있나?)
    코드를 한번 덮어써봤는데 덮어써지더라고요? 그래서 스택의 ret부분에 get_shell의 주소를 두고 leave ret을 카나리 확인 위에 덮어썼는데 실패.. pwndbg로 보면 특정 코드에서 더 안나가더라고요. 이건 왜 그러나..

  2. 왜 실행할 때마다 스택주소가 달라지나요? 컴파일된 내용은 같을텐데 왜 위치가 다른지.. PIE가 적용되지 않으니까 그냥 운영체제가 랜덤하게 고르는건가

#pwnable
작성자 정보
답변 1
avatar
sangjun
공부벌레
  1. 덮으시는 위치가 코드 영역인지 bss영역이였는지 확인해보시기 바랍니다.

  2. stack주소가 바뀌는 이유는 ASLR이 켜져있기 때문입니다. 스택 주소를 고정하려면
    echo 0 >/proc/sys/kernel/randomize_va_space
    를 해주면 됩니다.

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