buuctf 41-44

文章讲述了在FlareOn3挑战中,解码base64编码并使用Z3求解器解决迷宫问题的C代码片段。参赛者通过观察函数、字符串操作和使用z3工具找到flag。
摘要由CSDN通过智能技术生成

[FlareOn3]Challenge1

32无壳

401260函数

应该是base64换表

新表ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/

特殊的 BASE64

64位

有一个base64函数

乱乱的

看字符串应该也是换表吧

[ACTF新生赛2020]Oruga

一开始进来上面标红了一串,先不管

找主函数

开78A函数好怪好怪

进入那个数组

很奇怪,应该在十六进制窗口看

迷宫问题,从左上角去叹号

属于一次走很多遇到障碍物停下那种

所以flag{MEWEMEWJMEWJM}

参考:http://t.csdnimg.cn/hfk8F

[ACTF新生赛2020]Universe_final_answer

进入860函数

if里条件都要符合

写z3脚本

from z3 import *

s = Solver()
v1, v2, v3, v4, v5, v6, v7, v8, v9, v0 = Ints('v1 v2 v3 v4 v5 v6 v7 v8 v9 v0')
s.add(-85 * v9 + 58 * v8 + 97 * v6 + v7 + -45 * v5 + 84 * v4 + 95 * v2 - 20 * v1 + 12 * v3 == 12613)
s.add(30 * v0 + -70 * v9 + -122 * v6 + -81 * v7 + -66 * v5 + -115 * v4 + -41 * v3 + -86 * v1 - 15 * v2 - 30 * v8 == -54400)
s.add(-103 * v0 + 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 * v0 == 22855)
s.add(5 * v0 + 23 * v9 + 122 * v8 + -19 * v6 + 99 * v7 + -117 * v5 + -69 * v3 + 22 * v1 - 98 * v2 + 10 * v4 == -2944)
s.add(-54 * v0 + -23 * v8 + -82 * v3 + -85 * v2 + 124 * v1 - 11 * v4 - 8 * v5 - 60 * v7 + 95 * v6 + 100 * v9 == -2222)
s.add(-83 * v0 + -111 * v7 + -57 * v2 + 41 * v1 + 73 * v3 - 18 * v4 + 26 * v5 + 16 * v6 + 77 * v8 - 63 * v9 == -13258)
s.add(81 * v0 + -48 * v9 + 66 * v8 + -104 * v6 + -121 * v7 + 95 * v5 + 85 * v4 + 60 * v3 + -85 * v2 + 80 * v1 == -1559)
s.add(101 * v0 + -85 * v9 + 7 * v6 + 117 * v7 + -83 * v5 + -101 * v4 + 90 * v3 + -28 * v1 + 18 * v2 - v8 == 6308)
s.add(99 * v0 + -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)

解得到

还有一个C50函数

很奇怪的一个函数,然后发现没有人分析

浅浅跳过

然后主函数那个输出有%s,所以我们把Z3求出来的化成字符型,然后运行程序得到

结束了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值