lancer0rz
angr_1

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))#0是输入,1是输出
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))#0是输入,1是输出
else :
print("err!")
本文作者:lancer0rz
本文链接:http://example.com/2023/12/13/angr_1/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可