码迷,mamicode.com
首页 > 其他好文 > 详细

Pwnable-random

时间:2019-10-27 22:48:42      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:libc   random   下载地址   gdb调试   提交   慢慢   case   turn   调试   

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

标签:libc   random   下载地址   gdb调试   提交   慢慢   case   turn   调试   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!