刘功瑞的博客

有一天你突然惊醒,发现这一切,都只不过是一场梦。

攻防世界 XCTF Reverse easyCpp Writeup

image.png

image.png

这题非常复杂,斐波那契数组

image.png

image.png



1.接受16个数字输入 

2.计算斐波那契数列前16项 

3.把16个数字输入从第二个元素开始,都加上第一个元素 

4.将3的结果反向 

5.将4的结果和2的结果比较,完全相同则输入的是flag

def fib(a1):
    if a1 == False or a1 == 1:
        return 1
    v2 = fib(a1 - 1)
    return v2 + fib(a1 - 2)

for i in range(16):
    print fib(i)

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
c = a[::-1]
d = [987]
for i in range(1,len(c)):
    d.append(c[i]-987)

print(d)
#[987, -377, -610, -754, -843, -898, -932, -953, -966, -974, -979, -982, -984, -985, -986, -986]
from pwn import *

p = process('./easyCpp')
input_ = [987,
 -377,
 -610,
 -754,
 -843,
 -898,
 -932,
 -953,
 -966,
 -974,
 -979,
 -982,
 -984,
 -985,
 -986,
 -986]
for i in input_:
    p.sendline(str(i))

p.interactive()
#flag{987-377-843-953-979-985}


发表评论:

Powered By Z-BlogPHP 1.5.2 Zero

Copyright www.liugongrui.com.All Rights Reserved.