angr学习笔记(8)(文件内容符号化)
生活随笔
收集整理的這篇文章主要介紹了
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)(文件内容符号化)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angr学习笔记(7)(malloc地址
- 下一篇: angr学习笔记(9)(添加约束)