针对angr提供的练习题,现在进行求解14_angr_shared_library,它也是关于外部导入在动态库的问题,需要使用angr求解出正确密码。但是需要提供排除地址以减少路径求解时间。
具体代码如下所示

import angr
import claripy
import sysdef main(argv):path_to_binary = 'lib14_angr_shared_library.so'#定义基本地址,共享库文件中的地址是基本地址+偏移地址,偏移地址就是文件中的地址base = 0x08048000project = angr.Project(path_to_binary, load_options={ 'main_opts' : { 'custom_base_addr' : base } })# 初始化符号变量,0x20000000为缓冲区地址sym_val=claripy.BVV(0x20000000,32)#validate函数地址为base+0x6d7validate_function_address = base+0x6d7#因为需要比较的字符串长度为8,故利用BVV传入参数claripy.BVV(8,32)initial_state = project.factory.call_state(validate_function_address,sym_val,claripy.BVV(8,32))password=claripy.BVS("password",64)initial_state.memory.store(sym_val,password)simulation = project.factory.simgr(initial_state)success_address = base+0x783simulation.explore(find=success_address)if simulation.found:solution_state = simulation.found[0]solution_state.add_constraints(solution_state.regs.eax!=0)solution =solution_state.solver.eval(password,cast_to=bytes)print('solution is {0}'.format(solution))else:raise Exception('Could not find the solution')if __name__ == '__main__':main(sys.argv)

validate函数地址validate_function_address是基本地址+0x6d7。

validate函数需要输入两个变量s1和a2,其中,sym_val对应s1,claripy.BVV(8,32)对应a2

符号位向量password作为符号化的传入字符串传入缓冲区地址0x20000000中。
success_address是base+0x783,0x783对应validate函数结束地址。

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

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

  1. coreelec 下载app_DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南...

    DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南 2019-04-26 15:28:57 64点赞 427收藏 117评论 你是AMD Yes党?还是intel和NVIDIA的 ...

  2. 计算机 发声原理,耳机 篇十五:动铁耳机发声原理哦。喜欢记得收藏。

    耳机 篇十五:动铁耳机发声原理哦.喜欢记得收藏. 2019-01-15 04:14:27 4点赞 0收藏 0评论 动铁式耳机是通过一个结构精密的连接棒传导到一个微型振膜的中心点,从而产生振动并发声的耳 ...

  3. hp9000 e25服务器 显示器,DIY瞎折腾 篇十五:又挽救了一台显示器-HP 2011X-附翻车过程...

    DIY瞎折腾 篇十五:又挽救了一台显示器-HP 2011X-附翻车过程 2021-03-12 20:23:38 3点赞 9收藏 4评论 创作立场声明:节能环保,废物利用,交流过程,希望大家剩下钱,买更 ...

  4. 疑难杂症篇(十五)--winXP下出现“安装向导无法创建文件夹‘C:\DOCUME~1\ADMIN~1\LOCALS~1\Temp\is-PCCET.tmp‘“问题的解决方案

    本博文将给出winXP系统下,出现"安装向导无法创建文件夹'C:\DOCUME~1\ADMIN~1\LOCALS~1\Temp\is-PCCET.tmp 错误82:无法创建目录或文件&quo ...

  5. 学习->C++篇十五:红黑树和map,set

    目录 一 . 红黑树的定义(规则): 二 . 红黑树是如何保持平衡的? 插入操作: 情况一:叔叔节点存在且为红色 情况二:叔叔节点不存在或存在且为黑色 三.map和set如何封装? 一 . 红黑树的定 ...

  6. [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Python网络攻防相关基础知识,包括正则表达式.Web编程和套接字通信 ...

  7. 老鱼Python数据分析——篇十五:“选股宝”使用API下载JSON格式数据

    从页面读取数据每次都需要定位HTML标签,那么有没有更简洁的办法呢? 当然有,那就是找到页面数据的来源,分析哪些数据是我们想要的,直接通过WebAPI来获得数据. 我使用的是360极速浏览器,按F12 ...

  8. Python遥感图像处理应用篇(十六):GDAL 将归一化处理csv数据转化为遥感影像

    1.使用数据 将上一篇文章中得到的计算结果作为转换数据.链接如下: Python遥感图像处理应用篇(十五):GDAL 读取多光谱数据做归一化处理_空中旋转篮球的博客-CSDN博客 2.实现代码 基本思 ...

  9. Vue实战篇十六:导航菜单

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  10. [网络安全提高篇] 一一五.Powershell恶意代码检测 (3)Token关键词自动提取

    "网络安全提高班"新的100篇文章即将开启,包括Web渗透.内网渗透.靶场搭建.CVE复现.攻击溯源.实战及CTF总结,它将更加聚焦,更加深入,也是作者的慢慢成长史.换专业确实挺难 ...

最新文章

  1. 柴油发电机组的基本结构及工作特性
  2. 销量赶超娇兰、SK-II的林清轩,能带领国产护肤品奔赴高端化吗?
  3. RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建
  4. mysql查询没有权限试图_MySQL迁移后提示查询view权限不足的处理
  5. 【Java】字符串交叉合并
  6. 408中的计算机组成原理,2021考研计算机大纲408计算机组成原理部分原文解析
  7. 通过按Enter阻止用户提交表单
  8. 软件工程导论 四则运算
  9. 【专题】CSDN下载频道3月热门资源top100汇总
  10. 【3D相册】零基础完成3D相册并配上背景音乐
  11. 电商直播发展正夯,搭建电商网站需要怎样的云服务器配置?
  12. HTML制作诗词,利用 html2canvas 做个简单的诗词卡片生成器
  13. 我国首个5G地铁站开通:TCL集团重组方案通过;苹果2019新品图泄露|雷锋早报...
  14. windows 查看wifi密码命令
  15. 查询学生的学号、课程号和成绩,并按成绩升序排序
  16. web实训——3.12
  17. 抖音关注和喜欢数据分析
  18. Service Mesh的未来将与Knative和Apahce Whisk等技术和谐共存——采访RedHat的Istio产品经理...
  19. webp怎么转png?图片webp格式怎么转换?
  20. XAMPP 的安装配置

热门文章

  1. SpringMVC、SpringBoot拦截器的实现和原理
  2. vue修改编码_看,官方出品了 Vue 编码风格指南!
  3. mergeBeanDefinition原理
  4. 机器学习会成为2017年大数据​分析的瓦解者吗?
  5. 到底什么才是自动化巡检?
  6. mysql 新增字段时判断字段是否存在
  7. iOS启动动画效果实现
  8. 查看和修改mysql最大连接数
  9. 百度支持nofollow是百度的进步
  10. [笔记]如何解决Your project contains C++ files but it is not using a supported native build system