ReverseROP解析data的ROP,一点一点还原frompwnimport*opcode=open('data','rb').read()opcode_gadget=opcode[0x30+8:]foroffsetinrange(0,len(opcode_gadget),8):print(f'{hex(u64(opcode_gadget[offset:offset+8]))}') 提取出来密文,转成64位的cipher=[0x98,0x7A,0xDF,0x57,0xC6,0xE3,0x18,0xC7,0x11,0x07,0xC7,0xD4,0x02,0xD2,0x9E,0x43,0x3A
我在学习angr时,先是阅读了开发者发布在IEEE上的论文IEEEXploreFull-TextPDF:该文章讲述了自动化漏洞挖掘的背景和方法,并对angr的架构和核心模块进行了介绍,非常经典值得一读。而后,我阅读了angr官方文档和API文档,对angr有了总体的、晕晕乎乎的了解。最后,我发现了github上的项目angr_ctf,并使用该项目在解题过程中不断补充、修正我对angr的了解,以下是涉及的相关连接,你可能用得上:angr官方文档README-angrDocumentationangr的API文档angrAPIdocumentation—angr9.2.26documentatio
我在学习angr时,先是阅读了开发者发布在IEEE上的论文IEEEXploreFull-TextPDF:该文章讲述了自动化漏洞挖掘的背景和方法,并对angr的架构和核心模块进行了介绍,非常经典值得一读。而后,我阅读了angr官方文档和API文档,对angr有了总体的、晕晕乎乎的了解。最后,我发现了github上的项目angr_ctf,并使用该项目在解题过程中不断补充、修正我对angr的了解,以下是涉及的相关连接,你可能用得上:angr官方文档README-angrDocumentationangr的API文档angrAPIdocumentation—angr9.2.26documentatio
状态操作angr中提到的状态(state)实际上是一个Simstate类,该类可由Project预设得到。预设完成后,还可以根据需要对某些部分进行细化操作。一个state包含了程序运行到某个阶段时,内存、寄存器、文件系统、符号变量和符号约束等内容。寄存器访问可以通过state.regs.寄存器名来访问和修改寄存器>>>print(state.regs.eax,state.regs.ebx)>>>state.regs.eax+=1>>>print(state.regs.eax,state.regs.ebx)栈访问栈访问涉及两个寄存器:ebp和esp,以及两个指令:push和pop,对于寄存器的访
状态操作angr中提到的状态(state)实际上是一个Simstate类,该类可由Project预设得到。预设完成后,还可以根据需要对某些部分进行细化操作。一个state包含了程序运行到某个阶段时,内存、寄存器、文件系统、符号变量和符号约束等内容。寄存器访问可以通过state.regs.寄存器名来访问和修改寄存器>>>print(state.regs.eax,state.regs.ebx)>>>state.regs.eax+=1>>>print(state.regs.eax,state.regs.ebx)栈访问栈访问涉及两个寄存器:ebp和esp,以及两个指令:push和pop,对于寄存器的访
路径爆炸之前说过,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文件,并且给出了芯片信息我们可以确定程序的内存布局和外设寄存器与内存的对应。而逆向