Отправка второго TCP-сообщения не распознается / нет реакции на стороне сервера, с Netcat работает нормально - PullRequest
0 голосов
/ 24 февраля 2020

Это задание для подготовки CTF , которое можно найти в https://rookies.fluxfingers.net/code.php?p=chal&id=142.

Задача состоит в том, чтобы вычислить сумму для всех четных числа - сумма всех нечетных чисел .

Я решил это, но при отправке ответного сообщения на сервер оно не отвечает с флагом .

Но с n c rkchals.fluxfingers. net 5002 второе сообщение можно отправить . Мой код:

import socket
import re

#connection establishing
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("rkchals.fluxfingers.net",5002))
message = str(s.recv(3000))

#data processing
numbers= re.findall("\d+",message)
uneven_numbers=list()
even_numbers = list()
for i in numbers:
 if(int(i)%2==0):        
     even_numbers.append(int(i))
 else:        
     uneven_numbers.append(int(i))
answer = sum(even_numbers)-sum(uneven_numbers)

#log
print("server says: " + message + "\n")
print("numberarray is: " + str(numbers) + "\n")
print("even numbers are: " + str(even_numbers) + "\n")
print("odd numbers are: " + str(uneven_numbers) + "\n")
print("sum of even - sum of odd: " + str(answer) + "\n")

#sending the answer as string to get the flag
s.sendall(bytes(str(answer),"utf-8"))
print("flag is: " + str(s.recv(1024)))

В конце, когда я отправляю ответ сервер игнорирует его (?) , потому что последняя команда должна дать мне флаг в качестве ответа в результате отправки ответа ранее.

Что я должен изменить, чтобы сервер мог получать мое второе сообщение?

Я пытался: timeout (?)

I отсутствие знаний, и я не мог найти ответ здесь.

1 Ответ

0 голосов
/ 24 февраля 2020

Поскольку серверное приложение ожидает ввода Enter, я просто добавил это к своему коду:

s.sendall(bytes(str(answer) + "\n","utf-8"))

Затем сервер обычно отвечает с флагом.

...