首页 > 其他 > 详细

Pwnable-random

时间:2019-10-27 23:22:31      阅读:105      评论:0      收藏:0      [点我收藏+]

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

        printf("Wrong, maybe you should try 2^32 cases.\n");
        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...

Pwnable-random

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!