gunnew의 잡설

pwnable.kr 13. lotto 본문

System Security

pwnable.kr 13. lotto

higunnew 2020. 2. 17. 16:36
반응형

 이번 문제도 너무 쉽다. 결국 취약점이 발견되는 곳은 play() 함수이다.

 submit에 우리가 직접 입력할 수 있으며, unsigned char lotto[6] 에 "/dev/urandom"을 통해 랜덤으로 문자를 입력한다. 자 그리고 문제가 되는 부분은 바로 이 부분이다.

        int match = 0, j = 0;
        for(i=0; i<6; i++){
                for(j=0; j<6; j++){
                        if(lotto[i] == submit[j]){
                                match++;
                        }
                }
        }

 이중 for문으로 match를 체크하는데 우리가 한 문자를 여섯 개로 제출했을 때, lotto 문자 중 하나만이라도 그 문자가 포함되어 있으면 match가 6개가 되어 flag가 나온다.


어떤 문자가 나올까? ASCII 문자 실험

자 그럼, urandom에서 무슨 문자가 나오는지 직접 살펴보자. 다음은 간단한 C 프로그램으로 무슨 문자가 나오는지 실험해 보았다.

 

 

우리가 입력할 수 있는 문자 중에서는 #, !, *, (, ), $, %, - 등 여러 가지가 나온다. 나는 그래서 * 여섯 개로 도전해보았다. 그런데 꽤 오래 걸렸다.

 

반응형

'System Security' 카테고리의 다른 글

pwnable.kr 15. cmd2  (0) 2020.02.19
pwnable.kr 14. cmd1 (Wildcard)  (0) 2020.02.17
pwnable.kr 12. blackjack  (0) 2020.02.17
pwnable.kr 11. coin1  (0) 2020.02.16
pwnable.kr 10. shellshock  (0) 2020.02.14
Comments