Angr安装与使用之使用篇(九)
针对angr提供的练习题,现在进行求解08_angr_constraints,需要使用angr求解出正确密码。
具体代码如下所示
import angr
import claripy
import sysdef main(argv):path_to_binary = argv[1]project = angr.Project(path_to_binary)start_address = 0x8048625initial_state = project.factory.blank_state(addr=start_address)password = claripy.BVS('password', 128)password_address = 0x804a050 #求解入口地址initial_state.memory.store(password_address, password)simulation = project.factory.simgr(initial_state)# Angr will not be able to reach the point at which the binary prints out# 'Good Job.'. We cannot use that as the target anymore.address_to_check_constraint = 0x08048565 #此外为check_equals_AUPDNNPROEZRJWKB函数的开始地址simulation.explore(find=address_to_check_constraint)if simulation.found:solution_state = simulation.found[0]# check_equals_AUPDNNPROEZRJWKB函数的使用是输入constrained_parameter_address与constrained_parameter_size_bytesconstrained_parameter_address = 0x804a050 constrained_parameter_size_bytes = 0x10constrained_parameter_bitvector = solution_state.memory.load(constrained_parameter_address,constrained_parameter_size_bytes)constrained_parameter_desired_value = 'AUPDNNPROEZRJWKB' # :string# 构造一个表达式,判断constrained_parameter_bitvector与'AUPDNNPROEZRJWKB' 是否相等constraint_expression = constrained_parameter_bitvector == constrained_parameter_desired_value#并将表达式作为求解约束solution_state.add_constraints(constrained_parameter_bitvector == constrained_parameter_desired_value)solution = solution_state.solver.eval(password,cast_to=bytes)print('solution is: ',solution.decode('utf-8'))else:raise Exception('Could not find the solution')if __name__ == '__main__':main(sys.argv)
输入的入口地址为0x804a050,且其大小为16*8。
check_equals_AUPDNNPROEZRJWKB函数的开始地址为0x08048565。
下面验证实验结果
执行刚刚写好的程序,保存为scaffold08.py,并将其与08_angr_constraints放于同一文件夹中,具体如下图所示。
再执行08_angr_constraints,然后需要我们输入angr刚刚求解出的密码,结果为Good Job。
至此,求解08_angr_constraints已全部完成。
Angr安装与使用之使用篇(九)相关推荐
- mac x99算法 java_黑苹果从入门到精通 篇九:从Clover转向OpenCore的X99 iMac Pro(一)...
黑苹果从入门到精通 篇九:从Clover转向OpenCore的X99 iMac Pro(一) 2019-12-27 17:01:17 196点赞 2085收藏 138评论 追加修改(2019-12-2 ...
- 【Linux】内核驱动篇九--设备模型
内核驱动篇九--设备模型 一.起源 二.新方案 2.1 sysfs: 一种用内存模拟的文件系统,系统启动时mount到/sys目录 2.2 uevent 三.代码中自动mknod 一.起源 linux ...
- OC 获取view相对位置_电脑DIY 篇九十七:万元内预算上30显卡,10700散片配耕升RTX3070炫光OC显卡装机推荐_搜狐汽车...
电脑DIY 篇九十七:万元内预算上30显卡,10700散片配耕升RTX3070炫光OC显卡装机推荐 2020-10-31 21:40:260点赞1收藏1评论 想攒一台电竞主机.家用主机.酷炫主机无从下 ...
- (Hibernate进阶)Hibernate系列——总结篇(九)
这篇博文是hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
- 详解centos7虚拟机安装elasticsearch5.0.x-安装篇(自己做测试了,es启动有错误可以在这上面找)
本篇文章主要介绍了centos7虚拟机安装elasticsearch5.0.x-安装篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. centos7虚拟机安装elasticsearch5.0.x ...
- 拟真机器人拯救者怎么来_笔点聊科技 篇九:3499起、卷土重来?理性聊聊刚发布的联想拯救者手机Pro...
笔点聊科技 篇九:3499起.卷土重来?理性聊聊刚发布的联想拯救者手机Pro 2020-07-23 10:44:27 0点赞 0收藏 0评论 创作立场声明:想让消费者接受品牌,真金白银买回家还感觉良好 ...
- 安装加密中间件 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 ...
最新文章
- Js选择框脚本 移动操作select 标签中的 option 项的操作事项
- c语言字符屏幕,C语言字符屏幕函数 - 编程资料 - Powered 万人网络编程学院 bcxy.yinese.com...
- Halcon图像增强方法与原理概述
- Minimum spanning tree HDU - 6954
- vue中Ajax(axios)及Ajax(vue-resource)的使用方法
- 1.10-linux三剑客之sed命令详解及用法
- unity_AR(一) 安卓手机无法显示模型和无法播放动画问题
- 取消setfill_9.1.7 setFillBefore方法:设置起始填充
- 阿里巴巴Java开发手册(黄山版)2022.2.3发布
- linux怎样压缩文件夹加密文件,linux下文件加密压缩和解压的方法
- 网卡超时实现机制 watchdog_timeo/ndo_tx_timeout
- ios-mfi_蓝牙部分翻译
- azkaban报错Error Chunking during uploading files to db
- fastdfs添加storage节点
- 为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著
- OWASP TOP 10-2021年十大Web应用安全风险榜单
- Kingbase兼容Oracle语法--连接操作符(+)
- win10怎么开启arp防火墙【系统天地】
- 利用matplotlib绘制圆环图的案例
- 使用WebGL去实现一个拖拽式UI代码生成App