BUUCTF-----Universe_final_answer

1.拿到文件,进行查壳

收集信息,无壳,64位程序

2.运行该文件

大概意思就是输入一个字符串 

3.带入ida

 

主程序就是这个样子,接下来就是对它进行分析

 

接下来,我们首先跟进函数sub_860

 

发现就是一个方程组,通过这个方程组就可以解出a1数组的元素

而这个a1数组就是我们的v5 

那么我们接下来就是书写脚本

注意两个地方

这两个地方在复制方程组的时候应该改为v6*64和v7*128

上脚本(注意这个脚本的运行需要安装z3库)

from z3 import *

s=Solver()
v1=Real('v1')
v2=Real('v2')
v3=Real('v3')
v4=Real('v4')
v5=Real('v5')
v6=Real('v6')
v7=Real('v7')
v8=Real('v8')
v9=Real('v9')
v11=Real('v11')

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


 运行结果是

v8 = 55(7)
 v1 = 48 (0)
 v6 = 95 (_)
 v2 = 70   (F)
 v4 = 82   (R)
 v3 = 117 (u)
 v11 = 64 (@)
 v9 = 119 (w)
 v5 = 84 (T)
 v7 = 121 (y)

括号里面是每个元素对应的ascill字符

接下来就按照

将它还原为a1数组

即F0uRTy_7w@

带回程序中

 得到flag为actf{F0uRTy_7w@_42}

带回网站进行验证

正确!!!! 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mov1A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值