angr学习笔记(8)(文件内容符号化)
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)(文件内容符号化)相关推荐
- android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...
Android学习笔记-保存文件(Saving Files) Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "externa ...
- oracle学习笔记 参数文件及数据库的启动和关闭
oracle学习笔记 参数文件及数据库的启动和关闭 我们这节课把oracle的参数文件以及oracle的启动关闭讲一下 一)参数文件作用 先看oracle的参数文件 它由来已久了 我们知道oracle ...
- ROS学习笔记-roslaunch文件的编写用sh脚本控制launch文件启动顺序
转载自:https://mp.weixin.qq.com/s?__biz=MzUyMTkxODQyOQ==&mid=2247484719&idx=1&sn=27b3a01c29 ...
- Python学习笔记:文件(File)
Python学习笔记:文件(File) 打开一个文件用于读写,在Python里十分简单,利用内置open函数,可以用绝对路径,也可以用相对路径. 默认模式是'r',只读模式. 文件句柄f是一个可迭代对 ...
- php写入文件内容方法,学习php写入文件内容的方法
在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...
- opencv学习笔记五--文件扫描+OCR文字识别
opencv学习笔记五--文件扫描+OCR文字识别 文件扫描 定义函数 边缘检测 获取轮廓 变换 OCR文字识别 环境配置 代码 文件扫描 # 导入工具包 import numpy as np imp ...
- git学习笔记——查找文件和文件内容
一.查找文件 ll 和find都可以用来查找文件 1.通过文件名在当前目录及其子目录中查找文件: find -name file_name find -name "file_name&quo ...
- Matlab学习笔记——数据文件定位
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...
- Qt学习笔记之文件处理
Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...
最新文章
- python turtle画气球-使用python在mac上简单弹出气球消息
- 全世界都认为汉语是婴儿语(转载)
- [Apache]网站页面静态化与Apache调优(图)
- php采集分析,PHP采集程序原理分析篇
- 程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)
- 三维重建19:锯齿排序
- java script创建对象_javascript笔记:深入分析javascript里对象的创建
- 容器与devops_容器和DevOps如何改变杜克大学的IT部门
- 区块链技术应用——站在风口上猪都会飞
- 排序算法速度测试(插入排序、二分法插入、选择排序、快速排序、堆排序)js实现...
- centos 安装qrcode 二维码
- 费用报销管理表格计算机考试,计算机等级考试EXCEL练习题-10通讯费年度计划表...
- linux 找出僵尸进程,linux 查看僵尸进程
- C++银行账户管理程序1
- Moss到底算不算叛逃?
- 倪海厦《天纪》「自参」
- linux lp命令,lp命令_Linux lp 命令用法详解:打印文件或修改排队的打印任务
- 对接银行的方法与流程
- 二级计算机等级证水平高吗,全国计算机水平一级高还是二级高
- matlab的app tab,MATLAB 之 App designer 小白学习(四)
热门文章
- 正点原子stm32f429 pcb_正点原子【STM32-F407探索者】第十六章 电容触摸按键实验
- tableau linux无网络安装_举个栗子!Tableau 技巧(110)两种方法实现正态分布 Normal distribution...
- Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略
- 成功解决numpy.ndarray格式类型转数据为list格式数据带有中括号(一行代码搞定!)
- ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)求导函数等代码实现之详细攻略
- Matlab:成功解决Undefined function or variable B
- AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
- Bigdata之sql+mplot:利用数据库信息和基于mplot将信息数据各种可视化(图表+地图+动态图)
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
- 7.3 TensorFlow笔记(基础篇):加载数据之从队列中读取