Pwnable-random

ssh连接,输入密码查看目录下的文件

 看看random.c的源码

#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!
");
                system("/bin/cat flag");
                return 0;
        }

        printf("Wrong, maybe you should try 2^32 cases.
");
        return 0;
}

我们要将key异或random==0xdeadbeef才能获得flag,但是rand函数没有设置随机数种子(srand),所以rand()在调用时会自动设随机数种子为1,导致随机数都是相同值,我们用gdb调试一下,看看随机值

先把文件下载下来

scp -P 2222 -r random@pwnable.kr:/home/random/ /home/你的下载地址

 用gdb在rand后面断点,慢慢调试(n)

 之后,发现执行完寄存器rax的值为0x6b8b4567,即rand的值,之后获得结果

把答案提交即可

 

 Mommy, I thought libc random is unpredictable...

原文地址:https://www.cnblogs.com/gaonuoqi/p/11749252.html