728x90

Daddy, teach me how to use random value in programming!

#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;
}

c언어를 배울때 rand함수는 srand를 해주기 전엔 random값이 아니라고 배웠다.

 

gdb로 rand의 첫번째 값을 확인해서 deadbeef랑 xor연산을 해준 값을 넣어주면 끝난다.

 

18에 bp를 걸어주고

 

 

0x6b8b4567 xor 0xdeadbeef = B526 FB88 >> 3039230856 (10진수)

 

Mommy, I thought libc random is unpredictable...

 

728x90

'pwnable > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] blukat  (0) 2020.10.12
[pwnable.kr] cmd1  (0) 2020.10.10
[pwnable.kr] passcode  (0) 2020.10.08
[pwnable.kr] mistake  (0) 2020.10.03
[pwnable.kr] lotto  (0) 2020.09.23

+ Recent posts