Как поднять свой pwn таск?
У меня есть задание на pwn. Мне необходимо либо скомпилировать его в exe или elf. Или поднять на сервере и порту так, что бы было возможно подключение по netcat
Вот исходный код:
import random
t=0
def generate_addition_subtraction():
num1 = random.randint(10, 99)
num2 = random.randint(10, 99)
operator = random.choice(['+', '-'])
if operator == '+':
result = num1 + num2
else:
result = num1 - num2
expression = f"{num1} {operator} {num2}"
return expression
while t !=100:
ex = generate_addition_subtraction()
print(ex)
if int(input("Ведите ответ:")) == int(eval(ex)):
t=t+1
print(t)
print("Вот твой флаг, гений арифметики: zel{m4tH_i5_mY_F4v0R1t3_l35SoN}")
Для компиляции в .exe b .elf я использовал pyinstaller.
При попытке работы с exe через pwntools происходит следующее: код для проверки:
from pwn import *
io = process("/pwn_1/pwn_1.exe")
s = io.recvline()
print(s)
я использую python 3.10 , pycharm и windows11
При попытке проверки elf в linux происходит это:
код для проверки:
from pwn import *
io = process("./pwn1")
s = io.recvline()
var= eval(s)
io.send(var)
Ошибка:
**┌──(kali㉿kali)-[~/pwn1]
└─$ /bin/python3.12 /home/kali/pwn1/task.py
[+] Starting local process './pwn1': pid 138364
Traceback (most recent call last):
File "/home/kali/pwn1/task.py", line 7, in <module>
io.send(var)
File "/usr/lib/python3/dist-packages/pwnlib/tubes/tube.py", line 790, in send
data = packing._need_bytes(data)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pwnlib/util/packing.py", line 1020, in _need_bytes
worst = s and max(map(ord, s)) or 0
^^^^^^^^^^^
TypeError: 'int' object is not iterable
[*] Stopped process './pwn1' (pid 138364)**
Использую vscode, python 3.10, kali linux
Затем я попробовал поднять на localhost.
import socket
import random
host = "127.0.0.1"
port = 10005
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
t=0
def generate_addition_subtraction():
num1 = random.randint(10, 99)
num2 = random.randint(10, 99)
operator = random.choice(['+', '-'])
if operator == '+':
result = num1 + num2
else:
result = num1 - num2
expression = f"{num1} {operator} {num2}"
return expression
while True:
while t != 100:
ex = generate_addition_subtraction()
print(ex)
if int(input("Ведите ответ:")) == int(eval(ex)):
t = t + 1
print(t)
print("Вот твой флаг, гений арифметики: zel{m4tH_i5_mY_F4v0R1t3_l35SoN}")
**┌──(kali㉿kali)-[~/pwn1]
└─$ /bin/python3.12 /home/kali/Desktop/qqq.py
Traceback (most recent call last):
File "/home/kali/Desktop/qqq.py", line 8, in <module>
s.connect((host, port))
ConnectionRefusedError: [Errno 111] Connection refused**
Так же пробовал вот такой вариант:
import socket
import random
sock = socket.socket()
sock.bind(('', 4444))
sock.listen(1)
conn, addr = sock.accept()
t=0
def generate_addition_subtraction():
num1 = random.randint(10, 99)
num2 = random.randint(10, 99)
operator = random.choice(['+', '-'])
if operator == '+':
result = num1 + num2
else:
result = num1 - num2
expression = f"{num1} {operator} {num2}"
return expression
while True:
while t != 100:
ex = generate_addition_subtraction()
print(ex)
if int(input("Ведите ответ:")) == int(eval(ex)):
t = t + 1
print(t)
print("Вот твой флаг, гений арифметики: zel{m4tH_i5_mY_F4v0R1t3_l35SoN}")
Начинает работать но при попытке подключения: nc 127.0.0.1 4444 Никакие данные не отображаются.
Буду очень благодарен любой помощи