针对angr提供的练习题,现在进行求解05_angr_symbolic_memory,需要使用angr求解出正确密码。但是需要提供排除地址以减少路径求解时间。
具体代码如下所示

import angr
import claripy
import sysdef main(argv):path_to_binary = argv[1]project = angr.Project(path_to_binary)start_address = 0x08048601initial_state = project.factory.blank_state(addr=start_address)#输入4个字符串,为8bytes则为8*8=64bitspassword0 = claripy.BVS('password0', 64)password1 = claripy.BVS('password1', 64)password2 = claripy.BVS('password2', 64)password3 = claripy.BVS('password3', 64)##找到输入的四个字符串的地址,即0x0a1ba1c0、0x0a1ba1c8、0x0a1ba1d0、0x0a1ba1d8# Determine the address of the global variable to which scanf writes the user# input. The function 'initial_state.memory.store(address, value)' will write# 'value' (a bitvector) to 'address' (a memory location, as an integer.) The# 'address' parameter can also be a bitvector (and can be symbolic!).password0_address = 0x0a1ba1c0initial_state.memory.store(password0_address, password0)password1_address = 0x0a1ba1c8initial_state.memory.store(password1_address, password1)password2_address = 0x0a1ba1d0initial_state.memory.store(password2_address, password2)password3_address = 0x0a1ba1d8initial_state.memory.store(password3_address, password3)simulation = project.factory.simgr(initial_state)def is_successful(state):stdout_output = state.posix.dumps(sys.stdout.fileno())return b'Good Job.' in stdout_outputdef should_abort(state):stdout_output = state.posix.dumps(sys.stdout.fileno())return b'Try Again.' in stdout_outputsimulation.explore(find=is_successful, avoid=should_abort)if simulation.found:solution_state = simulation.found[0]solution0 = solution_state.solver.eval(password0,cast_to=bytes)solution1 = solution_state.solver.eval(password1,cast_to=bytes)solution2 = solution_state.solver.eval(password2,cast_to=bytes)solution3 = solution_state.solver.eval(password3,cast_to=bytes)solution = solution0+b' '+solution1+b' '+solution2+b' '+solution3print('solutions is: {} '.format(solution.decode('utf-8')))else:raise Exception('Could not find the solution')if __name__ == '__main__':main(sys.argv)

入口地址为0x0a1ba1c0,这是是因为上一行’add esp,20h’的作用是清理scanf的栈空间。

下面验证实验结果
执行刚刚写好的程序,保存为scaffold05.py,并将其与05_angr_symbolic_memory放于同一文件夹中,具体如下图所示。

再执行05_angr_symbolic_memory,然后需要我们输入angr刚刚求解出的密码,结果为Good Job。

至此,求解05_angr_symbolic_memory已全部完成。

Angr安装与使用之使用篇(六)相关推荐

  1. Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛

    Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...

  2. amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月

    黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...

  3. 计算机启用时间 查找方式,电脑实用知识技巧 篇六:不需要第三方软件,这种方法查看系统启动时间...

    电脑实用知识技巧 篇六:不需要第三方软件,这种方法查看系统启动时间 2019-04-04 09:19:21 0点赞 0收藏 0评论 上次我们说到:开机小助手,要让我们看到开机时间,必须添加自启动项目, ...

  4. 双塔服务器做什么系统比较好,搭建一台真正的 All in One Home Server 篇六:HomeServer 怎么能少了群晖(完结篇)...

    搭建一台真正的 All in One Home Server 篇六:HomeServer 怎么能少了群晖(完结篇) 2015-08-28 17:47:48 60点赞 505收藏 62评论 前言之前 先 ...

  5. 计算机散热主机箱结构,电脑外设 篇六十三:第一次用这种,新型散热结构的机箱,在主板位置添加PWM风扇...

    电脑外设 篇六十三:第一次用这种,新型散热结构的机箱,在主板位置添加PWM风扇 2020-09-22 18:30:30 15点赞 44收藏 18评论 最近虽然已经入秋了,但天气还是很热,主机的散热问题 ...

  6. win10挂载linux iscsi存储,我的NAS使用经验 篇六:挂载iSCSI服务为物理磁盘给电脑扩容,支持Windows和MAC...

    我的NAS使用经验 篇六:挂载iSCSI服务为物理磁盘给电脑扩容,支持Windows和MAC 2020-12-23 22:02:01 161点赞 1634收藏 115评论 创作立场声明:我的NAS经验 ...

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

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

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

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

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

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

  10. 六轴机器人直角坐标系建立_知识篇-六轴机器人坐标

    一个机器人看起来简单,但是,真正要他实现各种功能还是蛮复杂的.本文就说说六轴机器人坐标的知识篇. 工业机器人坐标系介绍 一.工具坐标系 六轴机器人工具座标系是由工具中心点TCP与座标方位组成. 六轴机 ...

最新文章

  1. 百度二面:一个线程OOM了,其它线程还能运行吗?
  2. 盖茨在毕业礼上给毕业生的11个人生建议
  3. mysql5.5不兼容5.6sql文件_为什么这段sql在我的电脑上可以执行,另外一台不可以。使用的mysql5.6 另一台是5.5...
  4. 使用Docker for Windows初体验
  5. spring Quartz cron表达式
  6. SQL Server---触发
  7. 树莓派静态IP配置方法
  8. 解决ajax异步请求数据后swiper不能循环轮播(loop失效)问题、滑动后不能轮播的问题。
  9. 【转】Objective-C语法property详解
  10. 如何通过自定义属性设置PDMS模型颜色
  11. 描写计算机教室的词语,关于描写教室的词语
  12. Ubuntu18.04 运行velodyne
  13. php怎么获取账号密码,PHP 前台代码实现获取用户密码功能
  14. 神经网络:AlexNet
  15. 电脑插入USB鼠标unknown device问题解决方案
  16. C++满足条件的数累加
  17. js代码转换成java代码_js代码转换为java
  18. python拨号_python 宽带拨号
  19. todolist(网页版记事本)
  20. 基于在线地图的轨迹跟踪服务_JUST技术:利用轨迹拼接分析实时可达区域

热门文章

  1. Lotus中Form与Document的区别
  2. Mysql-DML操作
  3. 一图助你搞明白Spring应用上下文初始化流程!
  4. 使用 SpringBoot 写 RESTful风格 增删改查接口
  5. 企业真实面试题总结(二)
  6. 面试题之接口和抽象类的区别
  7. 生产者-消费者模型之集合ArrayBlockingQueue源码解读
  8. multiple多图选择,借助FormData通过ajax实现上传
  9. 使用folium制作出行地图
  10. BZOJ1878 [SDOI2009]HH的项链