angr_1
系统学习一下angr
1.简单介绍
angr是一个二进制代码分析工具,能够自动化完成二进制文件的分析,并找出漏洞。在二进制代码中寻找并且利用漏洞是一项非常具有挑战性的工作,它的挑战性主要在于人工很难直观的看出二进制代码中的数据结构、控制流信息等。angr是一个基于python的二进制漏洞分析框架,它将以前多种分析技术集成进来,它能够进行动态的符号执行分析(如,KLEE和Mayhem),也能够进行多种静态分析。
在ctf的一些情况下,我们有时候可以使用angr来进行自动化的求解flag,而不必去逆向复杂的算法。
2.安装
angr的安装比较麻烦,需要安装必要的虚拟环境。(我kali上花了一周才配好)
这里贴一篇博客Angr 安装-CSDN博客
同时,我目前的使用是在pycharm上一把梭(记得新建一个项目以免影响环境)
3.简单使用
使用题目GitHub - jakespringer/angr_ctf
00_angr_find
1 2 3 4 5 6 7 8 9 10 11
| import angr p=angr.Project("C:\\Users\\lenovo\\Desktop\\ctf_poem\\_study\\angr\\angr_ctf-master\\dist\\00_angr_find") init_state=p.factory.entry_state() sm=p.factory.simulation_manager(init_state) find_add=0x804867D sm.explore(find=find_add) if sm.found: found_state=sm.found[0] print(found_state.posix.dumps(0)) else : print("err!")
|
01_angr_avoid
1 2 3 4 5 6 7 8 9 10 11
| import angr p=angr.Project("C:\\Users\\lenovo\\Desktop\\ctf_poem\\_study\\angr\\angr_ctf-master\\dist\\01_angr_avoid") init_state=p.factory.entry_state() sm=p.factory.simulation_manager(init_state) find_add=0x80485BB sm.explore(find=find_add,avoid=0x80485AB) if sm.found: found_state=sm.found[0] print(found_state.posix.dumps(0)) else : print("err!")
|