Angr安装与使用之使用篇(一)
针对angr提供的练习题,现在进行求解00_angr_find,它是关于输入密码的问题,需要使用angr求解出正确密码。
参考博客点这里
#1 创建项目
project = angr.Project(“00_angr_find”)
#2 通过entry_state()创建一个默认初始状态,这个状态是为了告诉angr该从哪里开始
initial_state = project.factory.entry_state()
查看当前initial_state的值,为0x8048450。
使用IDA查看地址0x8048450处于00_angr_find的什么位置。
可以看出,0x8048450对应00_angr_find的_start位置。
#3 创建模拟管理器Simulation Managers
simulation = project.factory.simgr(initial_state)#4 开始执行直到到达希望的解决方案或者探索完所有的可能的路径
# 0x0804867D为希望得到的输出的虚拟地址
simulation.explore(find=0x0804867D)#5 如果找到则生成simulation.found,可以打印出这个状态。
if simulation.found: #检查是否发现了解决方案solution_state = simulation.found[0]print(solution_state.posix.dumps(sys.stdin.fileno())) #代表该状态执行路径的所有输入else:raise Exception('Cannot find')
其中,simulation.found的内容如下所示。
在IDA中查看0x0804867D,如下所示。
可以看出,绿框部分0x0804867D对应call _puts,就是我们需要求解的关键路径,而红框部分0x0804866B也对应call _puts,angr却未求解。这是因为指向此基本块的红箭头表示不会执行此路径,因此直接忽略即可。
import angr
import sys
def main(argv): path_to_binary = '00_angr_find' project = angr.Project(path_to_binary) initial_state = project.factory.entry_state() simulation = project.factory.simgr(initial_state) print_good_address = 0x0804867D simulation.explore(find=print_good_address)if simulation.found: solution_state = simulation.found[0]print(solution_state.posix.dumps(sys.stdin.fileno())) else:raise Exception('Cannot find')if __name__ == '__main__':main(sys.argv)
下面验证实验结果
执行刚刚写好的程序,保存为scaffold00.py,并将其与00_angr_find放于同一文件夹中,具体如下图所示。
再执行00_angr_find,然后需要我们输入angr刚刚求解出的密码即JXWVXRKX,结果为Good Job。
至此,求解00_angr_find已全部完成。
Angr安装与使用之使用篇(一)相关推荐
- 详解centos7虚拟机安装elasticsearch5.0.x-安装篇(自己做测试了,es启动有错误可以在这上面找)
本篇文章主要介绍了centos7虚拟机安装elasticsearch5.0.x-安装篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. centos7虚拟机安装elasticsearch5.0.x ...
- 安装加密中间件 crypto - 命令篇
安装加密中间件 crypto - 命令篇 安装加密中间件 -- crypto 项目需要,有时候需要安装中间加密件,比如 crypto 一. cmd命令: 先cd到根目录:cd ...略 ...\boo ...
- MongoDB安装中断问题 - 踩坑篇
中断了安装?再重新安装已经报错? 是不是会弹框报错:"An installation for MongoDB 3.6.9 2008R2Plus SSL is currently suspen ...
- jsp的安装,何志强篇
<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; ...
- asp功放怎么装_汽车音响安装全攻略--功放篇
汽车音响安装全攻略--功放篇 安装功放比安装接收机或扬声器更需要一些技巧,但并不意味着不可操作.事先了解注意事项,可以减少发生故障的机率. 安 装 第一步:作好准备工作 功放与接收机间必须保持至少90 ...
- 使用anaconda安装pytorch——看这一篇就行了
开门见山 我的电脑里有python编译器 如何装pytorch框架? 答--用anaconda进行安装 翻阅了n多的文章 发现一个真理 看得越多 越容易出问题 那这里我针对每一个需要实现的目的 只放一 ...
- Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南 (转载)
源地址:http://fedora.linuxsir.org/main/?q=node/31 ==================================================== ...
- 块存储服务(Cinder)安装配置,这一篇就够了!
本实验是一个比较综合的实验,需要结合前面所学的OpenStack基础环境安装配置,身份认证服务(Keystone)安装配置等一些基础的实验来做这个块存储服务(Cinder)安装配置实验.为了更好地理解 ...
- nas安装emby_[Troy]瞎折腾 篇二:黑群晖安装Emby教程—Emby Server无法启动怎么办
[Troy]瞎折腾 篇二:黑群晖安装Emby教程-Emby Server无法启动怎么办 2018-12-14 18:13:27 8点赞 181收藏 90评论 你是AMD Yes党?还是intel和NV ...
- 影院服务器linux系统怎么安装,私人家庭影院之路 - 篇一:服务器安装Rutorrent(PT盒子)Seedbox教程...
私人家庭影院之路 - 篇一:服务器安装Rutorrent(PT盒子)Seedbox教程 " D# e1 U- {& }. m- { 4 q ?: j8 `7 q9 u: R' J- ...
最新文章
- WebConfig 加密解密的原理是什么?
- 华硕路由器 linux上不了网,华硕ASUS路由器连不上网怎么办?
- mybatis plus 导出sql_软件更新丨mybatis-plus 3.0.7 发布,辞旧迎新
- 计算机三级之嵌入式系统学习笔记6
- mariadb mysql 5.7_MariaDB 10.1 和 MySQL 5.7 在普通商用硬件上的表现
- java——Random类和Math.Rondom
- Linux手动导入导出mysql数据库
- OneGame V1.0 发布,开源免费页游联运系统
- eclipse jee 和 myeclipse web项目的转换
- java教程配置通达信_通达信公式转换JAVA,一招最绝的选股技巧
- 图片怎么转换到Excel表格?偷偷安利一个好用的方法
- 网络口碑推广的策略和实施技巧
- 高级 JavaScript(一)
- 适配器模式【Adapter Pattern】
- 变换矩阵_平移 缩放 旋转及统一变换
- shell 调用matlab,在matlab中调用linux命令 以及后台运行matlab --zz
- keras实现手写数字识别
- 【题解】P1971 [NOI2011] 兔兔与蛋蛋游戏
- Jmeter验证码注册接口压力测试实战
- C语言的键盘输入和屏幕输出
热门文章
- 你所不知道的Redis热点问题以及如何发现热点
- 软件设计原则(三) 依赖倒置原则
- Mybatis批量保存Clob类型时ORA-01461: can bind a LONG value only for insert into a LONG column报错解决方法
- springcloud之eureka客户端的注册
- 【译】给小白准备的Web架构基础知识
- 红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
- ISI CVPR journal ranking
- java 算法基础之三合并排序法
- linux下原始套接字编程错误:Operation not supported
- spring与spring mvc