buuctf--Universe_final_answer

关于这个题目的题解,主要介绍一个求解方程的模块,以及如何运行elf文件.

首先查看相关信息:

可以看到是无壳的64位,所以我们将其拖动到ida64里面

一般来说,如果可以在外面直接看到main的话应该可以直接看伪代码,如果没有的话就可以优先查看字符串

这里发现了一个可疑的字符串,于是跟进,然后ctrl+X,再查看其伪代码

就可以发现直接是到了主函数里面,这里有一个输出,还有一个输入,然后再一个判断,然后还有一个函数,接着就将flag输出了

首先我们去看那个判断

这个判断有很多个未知数,很多个方程,这个如果要手动去求解的话就真的太难了,这里推荐一个python模块 sympy,主要用到这个模块的两个方法--symbols,solve

第一个用来设置未知数,第二个用来解方程

这里一共有10个未知数,但是有一些顺序又不是对的,但是不影响,因为计算结果是字典存储的,每一个未知数都对应一个结果,再排序就好!

(这里要注意一个点,就是方程是不含等于号的,因为这个方程它默认结果就是0了,所以这个方程要将等于号右边的数据移动至左侧)

from sympy import symbols,solve
v1,v2,v3,v4,v5,v6,v7,v8,v9,v11=symbols("v1,v2,v3,v4,v5,v6,v7,v8,v9,v11")
lst=[-85 * v9 + 58 * v8 + 97 * v6 + v7 + -45 * v5 + 84 * v4 + 95 * v2 - 20 * v1 + 12 * v3-12613
,30 * v11 + -70 * v9 + -122 * v6 + -81 * v7 + -66 * v5 + -115 * v4 + -41 * v3 + -86 * v1 - 15 * v2 - 30 * v8+54400
,-103 * v11 + 120 * v8 + 108 * v7 + 48 * v4 + -89 * v3 + 78 * v1 - 41 * v2 + 31 * v5 - (v6*pow(2,6)) - 120 * v9+10283
,71 * v6 + (v7*pow(2,7)) + 99 * v5 + -111 * v3 + 85 * v1 + 79 * v2 - 30 * v4 - 119 * v8 + 48 * v9 - 16 * v11-22855
,5 * v11 + 23 * v9 + 122 * v8 + -19 * v6 + 99 * v7 + -117 * v5 + -69 * v3 + 22 * v1 - 98 * v2 + 10 * v4+2944
,-54 * v11 + -23 * v8 + -82 * v3 + -85 * v2 + 124 * v1 - 11 * v4 - 8 * v5 - 60 * v7 + 95 * v6 + 100 * v9+2222
,-83 * v11 + -111 * v7 + -57 * v2 + 41 * v1 + 73 * v3 - 18 * v4 + 26 * v5 + 16 * v6 + 77 * v8 - 63 * v9+13258
,81 * v11 + -48 * v9 + 66 * v8 + -104 * v6 + -121 * v7 + 95 * v5 + 85 * v4 + 60 * v3 + -85 * v2 + 80 * v1+1559
,101 * v11 + -85 * v9 + 7 * v6 + 117 * v7 + -83 * v5 + -101 * v4 + 90 * v3 + -28 * v1 + 18 * v2 - v8-6308
,99 * v11 + -28 * v9 + 5 * v8 + 93 * v6 + -18 * v7 + -127 * v5 + 6 * v4 + -9 * v3 + -93 * v1 + 58 * v2+1697]
result=solve(lst,[v1,v2,v3,v4,v5,v6,v7,v8,v9,v11])
print(result)

程序运行结果如上,然后按照ida中赋值的顺序,我们将v1,v2交换位置,v6,v7交换位置,最后就得到了输入!--> F0uRTy_7w@

这个函数我也没有看懂是在干什么,好像就是将v5传进去,然后一系列操作,但是看了一下,好像也没有对这个v5做出什么改变,所以这里我们直接去运行程序!

对于PE文件可以在windows上运行,elf文件就需要linus系统了,所以这里将文件复制到kali里面,然后第一步需要更改权限,使用命令:chmod 777 文件名

然后运行程序通过命令:./文件名

这里再将输入结果复制过去

得到了flag: actf{F0uRTy_7w@_42}

对于解方程,还有一个模块就是z3模块,但是这个模块emmmm,有一个不好的地方就是它需要用python2,所以这里我就没有用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值