Tag Archive

#prng

이 태그가 포함된 글을 최신순으로 모아봤어요.

7
posts
BLOG2026-08-18
[💠 Platinum 3] getrandbits 가 흘린 비트로 MT19937 상태를 되찾다 — DreamHack Unbreakable 풀이
blog

[💠 Platinum 3] getrandbits 가 흘린 비트로 MT19937 상태를 되찾다 — DreamHack Unbreakable 풀이

같은 23088비트를 32비트씩, 16비트씩, 8·4·2비트씩, 마지막엔 1비트씩 흘리는 여섯 개의 MT19937. twist 도 tempering 도 GF(2) 위에서 선형이라 누출 비트 하나가 곧 1차식 한 줄이 된다. 19968개 미지수를 numpy 비트팩 소거로 풀어 상태를 복원하고, 예측한 난수로 AES 키 체인을 되감아 플래그까지 갔다.
#dreamhack#ctf#crypto+7
 
BLOG2026-08-02
[🥉 Bronze 3] 시드를 맞혀 37수를 미리 짜고, 이름 칸으로 셸을 부른다 — DreamHack Cat Jump 풀이
blog

[🥉 Bronze 3] 시드를 맞혀 37수를 미리 짜고, 이름 칸으로 셸을 부른다 — DreamHack Cat Jump 풀이

고양이가 37번 연속으로 장애물을 피해야 이름을 적을 수 있고, 그 이름은 snprintf 로 조립돼 system() 에 그대로 넘어간다. srand(time(NULL)) 이라 장애물 배치를 접속 시각만으로 전부 재현할 수 있어 37수를 미리 계산해 한 번에 밀어넣었고, 공백을 못 쓰는 제약은 명령 치환과 입력 리다이렉션으로 11글자에 맞춰 우회했다.
#dreamhack#ctf#pwnable+5
 
BLOG2026-07-21
[🥈 Silver 4] srand() 없는 rand()는 이미 예언된 미래다 — DreamHack randzzz 풀이
blog

[🥈 Silver 4] srand() 없는 rand()는 이미 예언된 미래다 — DreamHack randzzz 풀이

"난수를 맞혀보라"는 리버싱 문제. 그런데 바이너리를 뜯어보면 어디에도 srand()가 없다 — glibc의 rand()는 시드를 명시적으로 주지 않으면 항상 똑같은 순서로 값을 뱉는 결정론적 함수이므로, 이 프로그램이 뭘 물어볼지는 실행하기도 전에 전부 계산할 수 있다. 문제는 그 다음이다. 두 번의 검증이 서로 다른 정답을 요구하는데 입력은 한 번뿐이라, 한 번의 정상 실행으로는 절대 flag 전체를 볼 수 없다. GDB로 실행 중인 프로세스의 스택 메모리를 직접 고쳐써서 두 검증을 동시에 통과시킨 끝에야 완전한 flag가 나왔다.
#dreamhack#ctf#reversing+5
 
BLOG2026-07-20
[🥉 Bronze 4] "로봇 인증"이 오히려 로봇에게 판을 깔아줬다 — DreamHack Robot Only 풀이
blog

[🥉 Bronze 4] "로봇 인증"이 오히려 로봇에게 판을 깔아줬다 — DreamHack Robot Only 풀이

숫자 하나를 3초 안에 그대로 되받아 타이핑하면 "로봇 인증"이 완료된다. 그 숫자는 Python random 모듈의 원시 출력 6개를 이어붙여 고정된 상수로 XOR한 값이라, 우리가 화면에서 읽는 순간 그 6개 숫자를 그대로 역산할 수 있다. 그리고 이 인증은 실패해도 몇 번이든 다시 시도할 수 있다 — 104번만 반복하면 Mersenne Twister의 내부 상태를 완전히 복원하는 데 필요한 624개의 연속된 원시값을 전부 모을 수 있다는 뜻이다. 그 뒤로는 서버가 뽑을 도박 게임의 정답을 베팅하기도 전에 알 수 있게 된다.
#dreamhack#ctf#misc+5
 
BLOG2026-06-05
[🥇 Gold 3] CSP nonce를 예측해서 박아 넣다 — DreamHack Dream Lectures 풀이
blog

[🥇 Gold 3] CSP nonce를 예측해서 박아 넣다 — DreamHack Dream Lectures 풀이

강의 신청 사이트의 reason 필드가 autoescape false로 그대로 렌더된다. 진짜 벽은 CSP nonce인데, 이 nonce가 16비트 LFSR로 생성되고 매 응답 헤더에 평문으로 샌다. 한 번 새어 나온 nonce로 LFSR을 복원해 다음 값을 예측하고, apply 한 요청 안에서 봇이 페이지를 읽는 타이밍에 맞춰 script nonce를 박아 CSP를 통과시킨 뒤 navigation으로 플래그를 빼냈다.
#dreamhack#ctf#web+6