最近做CTF了解到了符号执行这一技术,发现符号执行真是时十分便捷。
符号执行介绍:https://www.anquanke.com/post/id/157928
我使用的是python下的angr这一工具
环境配置:
1.windows10:
环境:python2(python3好像也支持了)
分别执行:
pip install pyvex
pip install unicorn
pip install simuvex
pip install angr
之后import angr验证

成功(无视warning)
2.Kali linux下安装angr
环境:python2
由于我的kalilinux版本问题,直接pip install virtualenvwrapper是不能成功的(由于python2不支持最新的virtualenvwrapper版本,会报错)
所以我选择安装以前版本的virtualenvwrapper
pip install virtualenvwrapper==4.0

之后
设置一个环境变量WORKON_HOME:
export WORKON_HOME=$HOME/Python-workhome
启动virtualenvwrapper.sh脚本:
source /usr/local/bin/virtualenvwrapper.sh
创建一个虚拟环境:
mkvirtualenv angr
之后会自动进入到虚拟环境中,再安装angr
pip install angr
之后便可以在虚拟环境中使用angr了

切换环境: workon angr
退出环境: deactivate
删除环境: rmvirtualenv
用一个CTF题举例
正好手上有一道简单的CTF题,用来测试一下这个工具的使用
如图:这一题将输入进行了异或操作并与固定字符串比较

试一试用angr而不是写逆向算法来解
#exp.py
import angr
proj = angr.Project("./re2") #获取程序创建angr
simgr = proj.factory.simgr()
simgr.explore(find=lambda s: b"congratulations!" in s.posix.dumps(1)) #匹配到赢得方法
print simgr.found[0].posix.dumps(0)
只跑了十几秒即打印出了flag

参考链接:
本文介绍了符号执行技术及其在CTF题目中的应用,详细记录了在Windows和Kali Linux环境下配置angr工具的过程,并通过一个CTF题目演示了如何使用angr快速找到flag。
5274

被折叠的 条评论
为什么被折叠?



