0%

Angr求解CTF逆向问题

Angr求解CTF逆向问题

以i春秋2020新春战役EasyVM为例,我们用IDA分析一下

是一个模拟VM计算flag的程序,如果我们人工去推算,分析,再写个程序求解,太费时间,于是,我们使用angr来求解

1
2
3
4
5
6
7
8
9
10
11
12
#coding:utf8  
import angr
import claripy

base=0x400000
proj = angr.Project("./EasyVM",auto_load_libs=False)
st = proj.factory.entry_state()
simgr = proj.factory.simulation_manager(st)
#0xB73是正确的分支,0xB81是错误的分支
simgr.explore(find=base+0xB73,avoid=base+0xB81) #find就是正确的那条路 avoid错误的

print (simgr.found[0].posix.dumps(0)) #flag

1分钟不到,即可求得解