get_shell 호출시 do_system() 내에서 Segmentation Fault 발생하는 이유?
► 0x7f48eb379e3c <do_system+364> movaps xmmword ptr [rsp + 0x50], xmm0
0x7f48eb379e41 <do_system+369> mov qword ptr [rsp + 0x68], 0
0x7f48eb379e4a <do_system+378> call posix_spawn <posix_spawn>
thread_routine으로부터 master canary를 추출하고 get_shell로 return address를 정상적으로 변경했음에도 불구하고 do_system() 호출과정에서 해당 위치에서 자꾸만 segmentation fault를 발생시키는데 해결방법이 있을까요?
master canary를 유출시키는 과정에서 thread local storage 혹은 덮어쓰지 말아야할 공간을 덮어쓴 걸까요?
#pwnable
작성자 정보
답변
1
Dreamhack
대표 업적 없음
system을 호출하기 전에 ret instruction을 추가하여 스택 alignment를 맞춰주면 될 것 같아보입니다.
xmm 관련 instruction은 rsp 값이 16바이트(0x10) 단위로 정렬되어야 합니다.
감사합니다.