CTF Writeup

seeds - python bytes, int seed trick

LittleDev0617 2023. 11. 27. 14:25

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' 카테고리의 다른 글

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
safe-compiler / C jail Trick  (1) 2023.11.27