pwnable.kr random write up
2017. 7. 4. 21:24
pwnable.kr random write up
H3X0R팀 소속 BoB 6기 ch4n3
#include <stdio.h> int main(){ unsigned int random; random = rand(); // random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.n"); return 0; }
위 소스는 pwnable.kr의 random 문제의 소스이다.
일단 다들 C언어를 배우면서 random함수가 진정 랜덤값을 내놓지 못한다는 것을 알고 있을 것이다. 시드값이 없기 때문에 그런 것으로 알고 있다. 진정 랜덤함수를 얻으려면 srand() 함수를 이용해야 한다. rand() 함수가 실행 때 마다 같은 난수를 발생하는 이유에 대해서는 BoB 멘토님들께 들으려 계획하고 있다.
계속 고민하다가 파이썬 스크립트를 돌리기로 했다. LOB를 풀 때도 이렇게 파이썬 스크립트로 풀었던 경험이 있었기 때문에 이런 방법을 생각해냈다.
내가 한가지 간과한 사실이 있었는데, rand() 함수는 난수를 만들지만 실행할 때 마다 같은 난수를 같은 순서로 만들어 낸다는 특징이 있다는 것이다. 그래서 나는 random.c 비슷한 소스를 만들기로 했다.
그리고 플래그를 획득했다.
'write-ups > pwnable.kr' 카테고리의 다른 글
pwnable.kr cmd1 write up (0) | 2017.07.05 |
---|---|
pwnable.kr mistake write up (0) | 2017.07.04 |
pwnable.kr passcode write up (0) | 2017.07.04 |
pwnable.kr flag write up (0) | 2017.07.04 |
pwnable.kr bof write up (1) | 2017.07.04 |