-
[Pwnable] RandomWargame/HackCTF 2020. 1. 1. 22:13
기존에 풀던 포너블 문제와 다른 새로운 유형의 문제였다.
srand(time(0)); 을 이용하여 시간을 seed로 random number가 생성되고,
그렇게 생성된 random number와 입력값을 비교하는 문제이다.
시간을 seed로 하므로, 때려 맞추기에는 무리고..
rand 함수가 반환하는 값을 recv받을 수도 없다.
아무 생각도 안나서 가만히 문제 보고 있는데 옆에서 친구가 어떻게 푸는지 말해주었다.
스포일러인가?친구가 말해준 방법은 다음과 같다.
1. rand.c 라는 똑같이 time을 seed로 하는 프로그램을 만든다. 2. 위 프로그램의 출력값을 exploit.py가 recv받음과 동시에 문제 서버로 send한다. 3. 끝
rand.c
#include <stdio.h> #include <stdlib.h> #include <time.h> void main() { srand(time(0)); printf("%d\n", rand()); }
random_ex.py
from pwn import * r = remote('ctf.j0n9hyun.xyz', 3014) p = process('./rand') rand = p.recv() r.sendlineafter(': ', rand) r.recvuntil('\n') log.info("Flag is: "+r.recv())
다음에 이런 유형의 문제가 나온다면 꼭 스포일러 안당하고 내가 직접 풀어야겠다.
이제 푸는 방법 아니까.
'Wargame > HackCTF' 카테고리의 다른 글
[Pwnable] UAF (0) 2020.01.05 [Pwnable] Look at me (0) 2020.01.01 [Pwnable] gpwn (0) 2019.12.29 [Reversing] BabyMIPS (0) 2019.12.29 [Cryptography] Smooth CipherText (0) 2019.12.23