路径爆炸之前说过,angr在处理分支时,采取统统收集的策略,因此每当遇见一个分支,angr的路径数量就会乘2,这是一种指数增长,也就是所说的路径爆炸。以下是路径爆炸的一个例子:charbuffer[17];for(inti=0;i16;i++){if(buffer[i]!='B'){return0;}}return1;buffer的字符长度为16,当它等于16个连续的'B'时,程序返回1,然而angr在探索这样的路径时,会遇上16次if语句,也就相应地产生2的16次方个路径,但正确的答案只有一条路径能够达到(if全为false的那一条),这一条路径就被淹没在大量错误路径中,产生了路径爆炸。因此
路径爆炸之前说过,angr在处理分支时,采取统统收集的策略,因此每当遇见一个分支,angr的路径数量就会乘2,这是一种指数增长,也就是所说的路径爆炸。以下是路径爆炸的一个例子:charbuffer[17];for(inti=0;i16;i++){if(buffer[i]!='B'){return0;}}return1;buffer的字符长度为16,当它等于16个连续的'B'时,程序返回1,然而angr在探索这样的路径时,会遇上16次if语句,也就相应地产生2的16次方个路径,但正确的答案只有一条路径能够达到(if全为false的那一条),这一条路径就被淹没在大量错误路径中,产生了路径爆炸。因此
前言本文借鉴文章:https://www.yuque.com/dengfenglai-esbap/kb/mc4k41?#xOxNG在此基础上修改了一点(照着原来的做没成功),感谢这位师傅给的资源。1、环境准备1、主机:服务器CentOs72、Docker版本:20.10.23、Docker-compose版本:1.25.04、IP地址:公网地址或虚拟机地址2、系统环境搭建1、更新yum源yumupdate2、安装系统所需服务yuminstall-ygitnginxmariadbmariadb-serverMysql-pythonpython-pipgccpython-develyum-util
前言本文借鉴文章:https://www.yuque.com/dengfenglai-esbap/kb/mc4k41?#xOxNG在此基础上修改了一点(照着原来的做没成功),感谢这位师傅给的资源。1、环境准备1、主机:服务器CentOs72、Docker版本:20.10.23、Docker-compose版本:1.25.04、IP地址:公网地址或虚拟机地址2、系统环境搭建1、更新yum源yumupdate2、安装系统所需服务yuminstall-ygitnginxmariadbmariadb-serverMysql-pythonpython-pipgccpython-develyum-util
固件安全一、前言本日学习记录二、复现1、SCTF2020PasswordLock参考链接:https://xuanxuanblingbling.github.io/iot/2020/07/08/stm32/题目描述这是一个STM32F103C8T6MCU密码锁它具有4个按键,分别为1,2,3,4.分别对应GPIO_PA1,GPIO_PA2,GPIO_PA3,GPIO_PA4flag1格式为SCTF{正确的按键密码}输入正确的密码,它将通过串口(PA9–TX)发送flag2解题思路题目附件给出了一个Intelhex文件,并且给出了芯片信息我们可以确定程序的内存布局和外设寄存器与内存的对应。而逆向
固件安全一、前言本日学习记录二、复现1、SCTF2020PasswordLock参考链接:https://xuanxuanblingbling.github.io/iot/2020/07/08/stm32/题目描述这是一个STM32F103C8T6MCU密码锁它具有4个按键,分别为1,2,3,4.分别对应GPIO_PA1,GPIO_PA2,GPIO_PA3,GPIO_PA4flag1格式为SCTF{正确的按键密码}输入正确的密码,它将通过串口(PA9–TX)发送flag2解题思路题目附件给出了一个Intelhex文件,并且给出了芯片信息我们可以确定程序的内存布局和外设寄存器与内存的对应。而逆向
Reverse-Angrangr_ctf实验题目地址:这里这套题目也做了两三次了,但是不经常用就老忘,这次记录一下。里面有一些是自己的粗浅理解,有不正确的地方欢迎评论。Angr介绍Angr是一个跨平台的二进制分析框架,中间语言使用ValgrindVEXIR。安装直接pipinstallangr就行,会看到有很多依赖库,也证明angr内容的繁多。实际上Angr是一系列功能的集合:CLE实现加载二进制程序|加载中间语言(Vex)转换|跨平台基于Claripy约束求解|约束求解Unicorn等模拟程序状态和路径|模拟执行SimuVEX实现状态表示|符号化我们最常用的就是它符号执行的部分,当然这也是基
Reverse-Angrangr_ctf实验题目地址:这里这套题目也做了两三次了,但是不经常用就老忘,这次记录一下。里面有一些是自己的粗浅理解,有不正确的地方欢迎评论。Angr介绍Angr是一个跨平台的二进制分析框架,中间语言使用ValgrindVEXIR。安装直接pipinstallangr就行,会看到有很多依赖库,也证明angr内容的繁多。实际上Angr是一系列功能的集合:CLE实现加载二进制程序|加载中间语言(Vex)转换|跨平台基于Claripy约束求解|约束求解Unicorn等模拟程序状态和路径|模拟执行SimuVEX实现状态表示|符号化我们最常用的就是它符号执行的部分,当然这也是基
angr_ctf项目中后面13~17题没有新的成块的有关angr的知识了,只是对之前题目使用到的模块的扩展和补充,因此就不先列知识点和使用方式了,直接在实战中边讲解边说明库操作13_angr_static_binary:静态编译库函数替换此题的代码与第1题没有区别,但它是静态编译得来的二进制文件,将所有的库函数都写入二进制文件了。之前在angr_ctf——从0学习angr(三)中对第8题分析时讲到,angr对于库函数只会分出一条路径,而不关心库函数内部是怎样实现的,库函数内部的分支也不会增加angr路径上的分支数量。这个说法是正确的,但是不太严谨,这是因为angr存在一个符号函数摘要集(sym
angr_ctf项目中后面13~17题没有新的成块的有关angr的知识了,只是对之前题目使用到的模块的扩展和补充,因此就不先列知识点和使用方式了,直接在实战中边讲解边说明库操作13_angr_static_binary:静态编译库函数替换此题的代码与第1题没有区别,但它是静态编译得来的二进制文件,将所有的库函数都写入二进制文件了。之前在angr_ctf——从0学习angr(三)中对第8题分析时讲到,angr对于库函数只会分出一条路径,而不关心库函数内部是怎样实现的,库函数内部的分支也不会增加angr路径上的分支数量。这个说法是正确的,但是不太严谨,这是因为angr存在一个符号函数摘要集(sym