针对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安装与使用之使用篇(一)相关推荐

  1. 详解centos7虚拟机安装elasticsearch5.0.x-安装篇(自己做测试了,es启动有错误可以在这上面找)

    本篇文章主要介绍了centos7虚拟机安装elasticsearch5.0.x-安装篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. centos7虚拟机安装elasticsearch5.0.x ...

  2. 安装加密中间件 crypto - 命令篇

    安装加密中间件 crypto - 命令篇 安装加密中间件 -- crypto 项目需要,有时候需要安装中间加密件,比如 crypto 一. cmd命令: 先cd到根目录:cd ...略 ...\boo ...

  3. MongoDB安装中断问题 - 踩坑篇

    中断了安装?再重新安装已经报错? 是不是会弹框报错:"An installation for MongoDB 3.6.9 2008R2Plus SSL is currently suspen ...

  4. jsp的安装,何志强篇

    <script type="text/javascript"> google_ad_client = "pub-8800625213955058"; ...

  5. asp功放怎么装_汽车音响安装全攻略--功放篇

    汽车音响安装全攻略--功放篇 安装功放比安装接收机或扬声器更需要一些技巧,但并不意味着不可操作.事先了解注意事项,可以减少发生故障的机率. 安 装 第一步:作好准备工作 功放与接收机间必须保持至少90 ...

  6. 使用anaconda安装pytorch——看这一篇就行了

    开门见山 我的电脑里有python编译器 如何装pytorch框架? 答--用anaconda进行安装 翻阅了n多的文章 发现一个真理 看得越多 越容易出问题 那这里我针对每一个需要实现的目的 只放一 ...

  7. Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南 (转载)

    源地址:http://fedora.linuxsir.org/main/?q=node/31 ==================================================== ...

  8. 块存储服务(Cinder)安装配置,这一篇就够了!

    本实验是一个比较综合的实验,需要结合前面所学的OpenStack基础环境安装配置,身份认证服务(Keystone)安装配置等一些基础的实验来做这个块存储服务(Cinder)安装配置实验.为了更好地理解 ...

  9. nas安装emby_[Troy]瞎折腾 篇二:黑群晖安装Emby教程—Emby Server无法启动怎么办

    [Troy]瞎折腾 篇二:黑群晖安装Emby教程-Emby Server无法启动怎么办 2018-12-14 18:13:27 8点赞 181收藏 90评论 你是AMD Yes党?还是intel和NV ...

  10. 影院服务器linux系统怎么安装,私人家庭影院之路 - 篇一:服务器安装Rutorrent(PT盒子)Seedbox教程...

    私人家庭影院之路 - 篇一:服务器安装Rutorrent(PT盒子)Seedbox教程 " D# e1 U- {& }. m- { 4 q  ?: j8 `7 q9 u: R' J- ...

最新文章

  1. WebConfig 加密解密的原理是什么?
  2. 华硕路由器 linux上不了网,华硕ASUS路由器连不上网怎么办?
  3. mybatis plus 导出sql_软件更新丨mybatis-plus 3.0.7 发布,辞旧迎新
  4. 计算机三级之嵌入式系统学习笔记6
  5. mariadb mysql 5.7_MariaDB 10.1 和 MySQL 5.7 在普通商用硬件上的表现
  6. java——Random类和Math.Rondom
  7. Linux手动导入导出mysql数据库
  8. OneGame V1.0 发布,开源免费页游联运系统
  9. eclipse jee 和 myeclipse web项目的转换
  10. java教程配置通达信_通达信公式转换JAVA,一招最绝的选股技巧
  11. 图片怎么转换到Excel表格?偷偷安利一个好用的方法
  12. 网络口碑推广的策略和实施技巧
  13. 高级 JavaScript(一)
  14. 适配器模式【Adapter Pattern】
  15. 变换矩阵_平移 缩放 旋转及统一变换
  16. shell 调用matlab,在matlab中调用linux命令 以及后台运行matlab --zz
  17. keras实现手写数字识别
  18. 【题解】P1971 [NOI2011] 兔兔与蛋蛋游戏
  19. Jmeter验证码注册接口压力测试实战
  20. C语言的键盘输入和屏幕输出

热门文章

  1. 你所不知道的Redis热点问题以及如何发现热点
  2. 软件设计原则(三) 依赖倒置原则
  3. Mybatis批量保存Clob类型时ORA-01461: can bind a LONG value only for insert into a LONG column报错解决方法
  4. springcloud之eureka客户端的注册
  5. 【译】给小白准备的Web架构基础知识
  6. 红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
  7. ISI CVPR journal ranking
  8. java 算法基础之三合并排序法
  9. linux下原始套接字编程错误:Operation not supported
  10. spring与spring mvc