大数跨境
0
0

赛题分析8:Here are some big nums.

赛题分析8:Here are some big nums. 360安全人才能力发展中心
2019-10-29
3
导读:3CTF赛题分析题目类型:Reverse

赛题分析8: 

Here are some big nums.


题目类型:Pwn
解题思路:
首先把程序丢进IDA中,根据字符串信息找到程序主流程
可以明显看出将输入的字符串分为两部分,每部分16字节并进入相应的check中:


check1(考察SMC):
无法F5,代码也不具有逻辑性,查看函数列表发现有TLS回调,里面实现SMC解密,这里可以选择写个idc脚本,也可以直接用OD动态调试。解密后伪C代码如下:


主流程就是将字符串先按字节与“greatctf”异或,之后开始大数运算,先是自身平方,再是乘以“12345679”,最后与“667339003789000121539302795007135856775”相比较,流程比较简单,求逆即可得到前半段flag。


check2(考察z3):
给定了随机数种子,动态调试得到相应数值,利用Z3求解即可


Exp:
from z3 import *
import struct
s = [Int('serial%d' % i) for i in range(4)]
z3 = Solver()


v1 = 2
v2 = 11
v3 = 192
v4 = 31


z3.add(3*s[1]-1000*v1+s[0] == 6985912807)
z3.add(v3*s[2]-s[1]*v2 == 155893705628)
z3.add(s[2]*v4+(890+s[3])*v1 == 30549285333)
z3.add(v4*136*s[3]-v3*s[0] == 4612419708992)


print(z3.check())
answer=z3.model()
res = ""
for d in s:
    num = answer.eval(d).as_long()
    res += struct.pack('<L', num)
print(repr(res))

答案:PAPSETGQ_FRRBQLSsimpleRe__360CTF

360网络安全大学

如果你想展示你的CTF能力,我们提供给你机会,平台近期开始向社会征集CTF题目,题目类型不限制,奖励丰厚,有想法的大佬可以联系

university@360.cn。


【声明】内容源于网络
0
0
360安全人才能力发展中心
360政企安全集团旗下面向教育服务领域的唯一官方机构,致力于通过对人才能力的研究、教育平台的打造、教学内容的开发、教育服务生态的建设,为各机构和组织提供网络安全组织能力咨询、人才能力培养、专业能力认证、人才能力评估等服务。
内容 395
粉丝 0
360安全人才能力发展中心 360政企安全集团旗下面向教育服务领域的唯一官方机构,致力于通过对人才能力的研究、教育平台的打造、教学内容的开发、教育服务生态的建设,为各机构和组织提供网络安全组织能力咨询、人才能力培养、专业能力认证、人才能力评估等服务。
总阅读779
粉丝0
内容395