angr系列

00_angr_find

01_angr_avoid

02_angr_find_condition

03_angr_symbolic_registers

04_angr_symbolic_stack

05_angr_symbolic_memory

06_angr_symbolic_dynamic_memory

07_angr_symbolic_file

08_angr_constraints

09_angr_hooks

10_angr_simprocedures

13_angr_static_binary

文章目录

  • angr系列
    • 00_angr_find
    • 01_angr_avoid
    • 02_angr_find_condition
    • 03_angr_symbolic_registers
    • 04_angr_symbolic_stack
    • 05_angr_symbolic_memory
    • 06_angr_symbolic_dynamic_memory
    • 07_angr_symbolic_file
    • 08_angr_constraints
    • 09_angr_hooks
    • 10_angr_simprocedures
    • 13_angr_static_binary
  • 伪代码分析
  • 脚本
  • 验证:

伪代码分析



起始地址我们需要在初始化文件之前(因为这里并没有符号化文件名),输入password之后,

这里选在ignore_me之后,把栈变量清理之后地址处。即0x080488D6

在这里我们需要符号化文本的内容(我个人感觉并非整个文本文件),如下,文本文件名是OJKSQYDP.txt,文件大小是file_size=0x40,紧接着进行文件文本符号化,和之前的符号化有些不一样:password=init_state.solver.BVS("password",file_size*8),sim_file=angr.storage.SimFile(filename,content=password,size=file_size)

     filename='OJKSQYDP.txt'file_size=0x40password=init_state.solver.BVS("password",file_size*8)sim_file=angr.storage.SimFile(filename,content=password,size=file_size)

然后进行相应的 插入操作

 init_state.fs.insert(filename,sim_file)

最后进行文本内容的求解:

  password_bytes=found_state.solver.eval(password,cast_to=bytes)

脚本

import sys
import angr
def main(argv):bin_path=argv[1]p=angr.Project(bin_path)start_addr=0x080488D6init_state=p.factory.blank_state(addr=start_addr)filename='OJKSQYDP.txt'file_size=0x40password=init_state.solver.BVS("password",file_size*8)sim_file=angr.storage.SimFile(filename,content=password,size=file_size)init_state.fs.insert(filename,sim_file)sm=p.factory.simgr(init_state)def is_good(state):return b'Good Job.' in  state.posix.dumps(1)def is_bad(state):return b'Try again.' in  state.posix.dumps(1)dd    sm.explore(find=is_good,avoid=is_bad)if sm.found:found_state=sm.found[0]password_bytes=found_state.solver.eval(password,cast_to=bytes)print("Solution:{}".format(password_bytes.decode('utf-8')))else:raise Exception("Solution not found")if __name__=='__main__':main(sys.argv)

AZOMMMZM

验证:

angr学习笔记(8)(文件内容符号化)相关推荐

  1. android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...

    Android学习笔记-保存文件(Saving Files) Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "externa ...

  2. oracle学习笔记 参数文件及数据库的启动和关闭

    oracle学习笔记 参数文件及数据库的启动和关闭 我们这节课把oracle的参数文件以及oracle的启动关闭讲一下 一)参数文件作用 先看oracle的参数文件 它由来已久了 我们知道oracle ...

  3. ROS学习笔记-roslaunch文件的编写用sh脚本控制launch文件启动顺序

    转载自:https://mp.weixin.qq.com/s?__biz=MzUyMTkxODQyOQ==&mid=2247484719&idx=1&sn=27b3a01c29 ...

  4. Python学习笔记:文件(File)

    Python学习笔记:文件(File) 打开一个文件用于读写,在Python里十分简单,利用内置open函数,可以用绝对路径,也可以用相对路径. 默认模式是'r',只读模式. 文件句柄f是一个可迭代对 ...

  5. php写入文件内容方法,学习php写入文件内容的方法

    在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...

  6. opencv学习笔记五--文件扫描+OCR文字识别

    opencv学习笔记五--文件扫描+OCR文字识别 文件扫描 定义函数 边缘检测 获取轮廓 变换 OCR文字识别 环境配置 代码 文件扫描 # 导入工具包 import numpy as np imp ...

  7. git学习笔记——查找文件和文件内容

    一.查找文件 ll 和find都可以用来查找文件 1.通过文件名在当前目录及其子目录中查找文件: find -name file_name find -name "file_name&quo ...

  8. Matlab学习笔记——数据文件定位

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...

  9. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

最新文章

  1. python turtle画气球-使用python在mac上简单弹出气球消息
  2. 全世界都认为汉语是婴儿语(转载)
  3. [Apache]网站页面静态化与Apache调优(图)
  4. php采集分析,PHP采集程序原理分析篇
  5. 程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)
  6. 三维重建19:锯齿排序
  7. java script创建对象_javascript笔记:深入分析javascript里对象的创建
  8. 容器与devops_容器和DevOps如何改变杜克大学的IT部门
  9. 区块链技术应用——站在风口上猪都会飞
  10. 排序算法速度测试(插入排序、二分法插入、选择排序、快速排序、堆排序)js实现...
  11. centos 安装qrcode  二维码
  12. 费用报销管理表格计算机考试,计算机等级考试EXCEL练习题-10通讯费年度计划表...
  13. linux 找出僵尸进程,linux 查看僵尸进程
  14. C++银行账户管理程序1
  15. Moss到底算不算叛逃?
  16. 倪海厦《天纪》「自参」
  17. linux lp命令,lp命令_Linux lp 命令用法详解:打印文件或修改排队的打印任务
  18. 对接银行的方法与流程
  19. 二级计算机等级证水平高吗,全国计算机水平一级高还是二级高
  20. matlab的app tab,MATLAB 之 App designer 小白学习(四)

热门文章

  1. 正点原子stm32f429 pcb_正点原子【STM32-F407探索者】第十六章 电容触摸按键实验
  2. tableau linux无网络安装_举个栗子!Tableau 技巧(110)两种方法实现正态分布 Normal distribution...
  3. Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略
  4. 成功解决numpy.ndarray格式类型转数据为list格式数据带有中括号(一行代码搞定!)
  5. ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)求导函数等代码实现之详细攻略
  6. Matlab:成功解决Undefined function or variable B
  7. AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
  8. Bigdata之sql+mplot:利用数据库信息和基于mplot将信息数据各种可视化(图表+地图+动态图)
  9. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
  10. 7.3 TensorFlow笔记(基础篇):加载数据之从队列中读取