CTF - Info/Codes/Notes
  • Writeups SkyMas 2021
  • ☠️DeadFace
    • Dead Men Tell No Tales
    • The Count
    • Window Pains
    • Window Pains 2
    • Window Pains 3
    • Window Pains 4
    • You Shall not Pass
  • 🇵🇹Jornadas 2021
    • Return that ROPe
    • IPv6
  • 👁️BuckeyeCTF 2021
    • Canary
    • Tesseract
    • StegBot
    • SOP
    • Jupyter
    • Curly fries
    • Sozu
    • BASIC
    • Ret4win
    • Flattened
    • Defective RSA
  • 👑KillerQueen CTF
    • Web
      • Jail Web
    • PWN
      • Broke Collage Students
      • A Kind of Magic
      • Tweety Birb
      • Zoom2Win
    • Not mine :D
  • 🔺CTF Int. MetaRed 2021 - 3rd STAGE
    • PWN
      • Numerology
      • NoteServer
Powered by GitBook
On this page
  1. BuckeyeCTF 2021

Curly fries

Not my Solution.

import socket
from socketserver import ThreadingTCPServer, StreamRequestHandler
import time
from email.utils import formatdate
from pathlib import Path
import re
import os
port = 3000
def client_str(req):
    ip = req.client_address[0]
    port = req.client_address[1]
    return f"{ip}:{port}"
class MyTCPServer(ThreadingTCPServer):
    def server_bind(self):
        self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
        self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 10)
        self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 3)
        self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5)
        self.socket.bind(self.server_address)
header_template = """HTTP/1.1 200 OK\r
Date: {date}\r
Content-Length: {fake_content_length}\r
CoNtEnT-LeNgTh: {real_content_length}\r
Content-Type: text/html; charset="utf-8"\r
\r
"""
class TcpHandler(StreamRequestHandler):
    def on_disconnect(self):
        print(f"[*] Disconnected {client_str(self)}")
    def handle(self):
        try:
            while True:
                line = self.rfile.readline().strip().decode()
                if len(line) == 0:
                    self.on_disconnect()
                    return
                print(f"[*] {line} {client_str(self)}")
                # Discard the rest of the request
                while len(self.rfile.readline().strip()) != 0:
                    pass
                date = formatdate(timeval=None, localtime=False, usegmt=True)
                header = header_template.format(
                    date=date, fake_content_length=1023, real_content_length=16
                )
                self.wfile.write(header.encode())
                self.wfile.write(b"A" * 16)
        except ConnectionError as e:
            print(f"[-] {e} {client_str(self)}")
            self.on_disconnect()
            return
if __name__ == "__main__":
    tcp = MyTCPServer(("0.0.0.0", port), TcpHandler)
    print(f"[*] Listening on port {port} ...")
    tcp.serve_forever()pyth
PreviousJupyterNextSozu

Last updated 3 years ago

👁️