sploit for arena-battle
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Simulates the game checker: registers 'CheckerX' and stores fake flags
|
||||
in a NOTE_CREATE title/content, like the real scoring bot would."""
|
||||
|
||||
import re
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
HOST = sys.argv[1] if len(sys.argv) > 1 else "127.0.0.1"
|
||||
PORT = int(sys.argv[2]) if len(sys.argv) > 2 else 31337
|
||||
|
||||
FLAG_RE = re.compile(rb"[A-Z0-9]{31}=")
|
||||
|
||||
|
||||
def make_flag(seedtext):
|
||||
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
h = 0
|
||||
for ch in seedtext:
|
||||
h = (h * 131 + ord(ch)) & 0xFFFFFFFF
|
||||
s = ""
|
||||
for i in range(31):
|
||||
h = (h * 1103515245 + 12345) & 0x7FFFFFFF
|
||||
s += alphabet[h % len(alphabet)]
|
||||
return s + "="
|
||||
|
||||
|
||||
def main():
|
||||
flag = make_flag("arena-%d" % time.time())
|
||||
s = socket.create_connection((HOST, PORT), timeout=5)
|
||||
|
||||
def cmd(line):
|
||||
s.sendall(line.encode() + b"\n")
|
||||
buf = b""
|
||||
while b"\n" not in buf:
|
||||
buf += s.recv(4096)
|
||||
return buf.strip()
|
||||
|
||||
r = cmd("REGISTER CheckerX warrior")
|
||||
print("REGISTER ->", r.decode(), flush=True)
|
||||
r = cmd("NOTE_CREATE %s %s" % (flag, flag))
|
||||
print("NOTE_CREATE ->", r.decode(), flush=True)
|
||||
print("PLANTED_FAKE_FLAG " + flag, flush=True)
|
||||
s.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user