2023.11.26 HSpace CTF - seeds
import random
flag = "hspace{}"
random.seed(bytes.fromhex(input("hex seed> ")))
cache = random.getrandbits(50000)
random.seed(int(input("int seed> ")))
assert cache == random.getrandbits(50000)
print(flag)
seed를 bytes와 int 로 각각 설정하는데 같은 시드인 것처럼 동작해야한다.
python seed 코드를 확인해보면
https://github.com/python/cpython/blob/main/Lib/random.py#L167C32-L167C32
seed 가 bytes 인 경우 int.from_bytes(a + sha512(a)) 와 같이 숫자로 변환하여 사용한다
>>> import hashlib
>>> int.from_bytes(b'' + hashlib.sha512(b'').digest())
10868450558671247443152026947160338505683745266658651051718065983487878962987857602829315249215796444208488632888003673539585986066311769564391053988452926
bytes b'' 는 숫자 10868450558671247443152026947160338505683745266658651051718065983487878962987857602829315249215796444208488632888003673539585986066311769564391053988452926 와 대응함을 알 수 있다.
'CTF Writeup' 카테고리의 다른 글
FIESTA Writeup~ (0) | 2024.10.19 |
---|---|
2023 Layer7 CTF Writeup (1) | 2023.12.03 |
babysrc - CSP default-src, unsafe-inline bypass (1) | 2023.11.27 |
freeboard - php blind error based sqli (1) | 2023.11.27 |
hdrive - tar symbolic link attack (1) | 2023.11.27 |