payload 질문

카나리를 잘라올 때 canary = u64(b"\x00"+p.recvline()[-9:-2]) 를 사용했는데, 로컬에서는 정상적으로 쉘이 떨어지는데 원격 서버에서 할 때는 동작하지 않고 Got EOF while reading in interactive 가 뜹니다. p.recvuntil(payload) canary = u64(b"\x00"+p.recvn(7)) 랑 동일하게 결과가 나오는 것 같은데 무슨 차이가 있어서 EOF가 뜨는건지 궁금합니다 !

#pwnable
작성자 정보
답변 1
2dedce
워게임 고인물

interactive() 했는데 Got EOF while reading in interactive가 뜨는 것은 보통 프로그램이 쉘을 못따고 비정상종료되서 그렇습니다.
로컬에서 되는데 원격에서는 안되는 이유는 로컬과 서버의 환경이 달라 오프셋같은 것이 다른 것이 주원인입니다.
아니면 카나리를 유출시키는 경우 카나리 중간에 널바이트가 포함되면 7바이트가 출력되지 않고 중간에 짤릴 수 있어서 다시 실행시키면 됩니다.

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