Angr安装与使用之使用篇(六)
针对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安装与使用之使用篇(六)相关推荐
- Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛
Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...
- amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月
黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...
- 计算机启用时间 查找方式,电脑实用知识技巧 篇六:不需要第三方软件,这种方法查看系统启动时间...
电脑实用知识技巧 篇六:不需要第三方软件,这种方法查看系统启动时间 2019-04-04 09:19:21 0点赞 0收藏 0评论 上次我们说到:开机小助手,要让我们看到开机时间,必须添加自启动项目, ...
- 双塔服务器做什么系统比较好,搭建一台真正的 All in One Home Server 篇六:HomeServer 怎么能少了群晖(完结篇)...
搭建一台真正的 All in One Home Server 篇六:HomeServer 怎么能少了群晖(完结篇) 2015-08-28 17:47:48 60点赞 505收藏 62评论 前言之前 先 ...
- 计算机散热主机箱结构,电脑外设 篇六十三:第一次用这种,新型散热结构的机箱,在主板位置添加PWM风扇...
电脑外设 篇六十三:第一次用这种,新型散热结构的机箱,在主板位置添加PWM风扇 2020-09-22 18:30:30 15点赞 44收藏 18评论 最近虽然已经入秋了,但天气还是很热,主机的散热问题 ...
- win10挂载linux iscsi存储,我的NAS使用经验 篇六:挂载iSCSI服务为物理磁盘给电脑扩容,支持Windows和MAC...
我的NAS使用经验 篇六:挂载iSCSI服务为物理磁盘给电脑扩容,支持Windows和MAC 2020-12-23 22:02:01 161点赞 1634收藏 115评论 创作立场声明:我的NAS经验 ...
- 详解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 ...
- 六轴机器人直角坐标系建立_知识篇-六轴机器人坐标
一个机器人看起来简单,但是,真正要他实现各种功能还是蛮复杂的.本文就说说六轴机器人坐标的知识篇. 工业机器人坐标系介绍 一.工具坐标系 六轴机器人工具座标系是由工具中心点TCP与座标方位组成. 六轴机 ...
最新文章
- 百度二面:一个线程OOM了,其它线程还能运行吗?
- 盖茨在毕业礼上给毕业生的11个人生建议
- mysql5.5不兼容5.6sql文件_为什么这段sql在我的电脑上可以执行,另外一台不可以。使用的mysql5.6 另一台是5.5...
- 使用Docker for Windows初体验
- spring Quartz cron表达式
- SQL Server---触发
- 树莓派静态IP配置方法
- 解决ajax异步请求数据后swiper不能循环轮播(loop失效)问题、滑动后不能轮播的问题。
- 【转】Objective-C语法property详解
- 如何通过自定义属性设置PDMS模型颜色
- 描写计算机教室的词语,关于描写教室的词语
- Ubuntu18.04 运行velodyne
- php怎么获取账号密码,PHP 前台代码实现获取用户密码功能
- 神经网络:AlexNet
- 电脑插入USB鼠标unknown device问题解决方案
- C++满足条件的数累加
- js代码转换成java代码_js代码转换为java
- python拨号_python 宽带拨号
- todolist(网页版记事本)
- 基于在线地图的轨迹跟踪服务_JUST技术:利用轨迹拼接分析实时可达区域