CTFs and solutions
This commit is contained in:
50
back-to-the-future/attack.py
Normal file
50
back-to-the-future/attack.py
Normal file
@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
from Cryptodome.Cipher import ChaCha20
|
||||
from Cryptodome.Random import get_random_bytes
|
||||
from Cryptodome.Util.number import long_to_bytes, bytes_to_long
|
||||
import time
|
||||
from random import randint
|
||||
from pwn import *
|
||||
import base64
|
||||
import requests
|
||||
import time
|
||||
from requests.utils import cookiejar_from_dict
|
||||
LOGIN ="http://130.192.5.212:6522/login"
|
||||
FLAG = "http://130.192.5.212:6522/flag"
|
||||
|
||||
#LOGIN="http://127.0.0.1:5000/login"
|
||||
#FLAG="http://127.0.0.1:5000/flag"
|
||||
# expire = 1.748.345.396
|
||||
PARAMS = {"username":'aa','admin':1}
|
||||
givenTime = int(time.time())
|
||||
|
||||
minAdminDate = givenTime - 10 * 24 * 60 * 60
|
||||
maxAdminDate = givenTime - 259 * 24 * 60 * 60
|
||||
avgAdminDate = int((minAdminDate + maxAdminDate)/2)
|
||||
expire_date = givenTime + 30 * 24 * 60 * 60
|
||||
eMin = expire_date - minAdminDate
|
||||
eMax = expire_date - maxAdminDate
|
||||
eAvg = (eMin+eMax) / 2
|
||||
plaintext = f"username={PARAMS['username']}&expires={expire_date}&admin={PARAMS['admin']}"
|
||||
plaintext = plaintext.encode()
|
||||
s = requests.Session()
|
||||
r = s.get(url=LOGIN,params=PARAMS)
|
||||
cookie= r.json()['cookie']
|
||||
cookie = long_to_bytes(cookie)
|
||||
print(f"Cookie encrypted len:{len(cookie)}, Plaintext len:{len(plaintext)}")
|
||||
nonce = r.json()['nonce']
|
||||
|
||||
ks = bytes([c ^ p for c,p in zip(cookie, plaintext)])
|
||||
|
||||
print(f"Keystream len:{len(ks)}")
|
||||
for i in range(1):
|
||||
|
||||
payload = f"username={PARAMS['username']}&expires={maxAdminDate + 295 * 24 * 60 * 60}&admin={1}".encode()
|
||||
|
||||
cookie = bytes([p ^ k for p,k in zip(payload,ks)])
|
||||
print(f"Malicious cookie len:{len(cookie)}")
|
||||
COOKIES = {'cookie':bytes_to_long(cookie),'nonce':nonce}
|
||||
f = s.get(url=FLAG,params=COOKIES)
|
||||
print(f.text)
|
||||
|
||||
##########
|
||||
Reference in New Issue
Block a user