pwhtools에서 recvuntil함수 EOFError 문제
>>>p.recvuntil("buf = (")
<stdin>:1: BytesWarning: Text is not bytes; assuming ASCII, no guarantees. See https://docs.pwntools.com/#bytes
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.11/dist-packages/pwnlib/tubes/tube.py", line 339, in recvuntil
res = self.recv(timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pwnlib/tubes/tube.py", line 104, in recv
return self._recv(numb, timeout) or b''
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pwnlib/tubes/tube.py", line 174, in _recv
if not self.buffer and not self._fillbuffer(timeout):
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pwnlib/tubes/tube.py", line 153, in _fillbuffer
data = self.recv_raw(self.buffer.get_fill_size())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pwnlib/tubes/sock.py", line 56, in recv_raw
raise EOFError
EOFError
Q.
basic_exploitation_001문제 풀려고 하는데
pwntools에서 recvuntil함수 관련 오류입니다.
혹시 해결하신 분 있을까요?
OS는 칼리리눅스 입니다.
>>>print(p.recvall())
[x] Receiving all data
[x] Receiving all data: 0B
[+] Receiving all data: Done (0B)
[*] Closed connection to host3.dreamhack.games port xxxxx
b''
recvall()의 결과 입니다. 서버에 문제가 없는 건가요?
#pwntools
작성자 정보
답변
1
qwerty
CTF First Place
EOFError는 socket연결이 종료된 후 해당 소켓에 p.send
혹은 p.recv
등의 명령을 전송한 경우 발생합니다. 정확한 원인은 페이로드를 알아야 확인할 수 있기 때문에 해당 내용은 지금 확인하기 힘들 것 같습니다.
또한 p.recvall()
은 원래 timeout을 인자로 주지 않는 경우 EOF가 나기 전까지 입력을 받기 때문에, 해당 방법은 정상적으로 서버가 동작하는지 체크하는 올바른 방법이 아닙니다.recvall code
추가적으로, basic_exploitation_001
의 source code를 보면 printf
나 puts
같은 것이 없이 gets
로 입력만 받기 때문에, 서버에서 초기에 아무 내용도 보내지 않는 것은 정상적인 동작입니다.
소스코드를 다시 한 번 분석해보시고 익스플로잇을 진행해 보는 것이 좋을 것 같습니다!