완료됨
read(fd, buf, 0x30)
mov rdi, rax ; rdi = fd
mov rsi, rsp
sub rsi, 0x30 ; rsi = rsp-0x30 ; buf
mov rdx, 0x30 ; rdx = 0x30 ; len
mov rax, 0x0 ; rax = 0 ; syscall_read
syscall ; read(fd, buf, 0x30)
여기서 mov rsi, rsp 한다음에 sub rsi, 0x30하는 이유가 뭔가요? 그냥 sub rsi, 0x30하면 안되는건가요?
#시스템_해킹
#공격기법
작성자 정보
답변
1
Karatus
워게임: 50
sub rsi, 0x30
앞에 mov rsi, rsp
가...
없을 때 => rsi
가 무슨 값인지 모르는 상태에서 -0x30을 하는 것. 적어도 저 컨텍스트만으로는 뭘 하려는지 알 수 없을 것. 의미 없는 일.
있을 때 => rsp
기준으로 현재 스택 프레임 위쪽에다가 저장 공간(buf)를 만들어주는 작업을 함. 크기는 뺀 만큼의 크기(0x30).
결론은 적어도 저 컨텍스트 상에서는 rsi에 무슨 값이 들어있는지도 모르기도 하고, 만들어줄 buf의 주소를 지정해주기 위해서 rsp의 값을 넣어서 그걸 기준으로 삼은 것입니다.