0x00:背景最近在为社团新生赛出pwn题,发现网上关于出题方面的文章资料特别少,所以打算记录下自己出题的过程,便于网友们参考学习。本次出题采用了ctf_xinetd与pwn_deploy_chroot项目。0x01:Docker介绍Docker将应用程序与该程序的依赖,打包在一个文件里面。只要运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,大大缓解了程序分布时的环境问题。docker的安装:#本人系统环境:Ubuntu22.04#更新软件包sudoapt-getupdate#安装dockersudoapt-getinstalld
0x00:背景最近在为社团新生赛出pwn题,发现网上关于出题方面的文章资料特别少,所以打算记录下自己出题的过程,便于网友们参考学习。本次出题采用了ctf_xinetd与pwn_deploy_chroot项目。0x01:Docker介绍Docker将应用程序与该程序的依赖,打包在一个文件里面。只要运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,大大缓解了程序分布时的环境问题。docker的安装:#本人系统环境:Ubuntu22.04#更新软件包sudoapt-getupdate#安装dockersudoapt-getinstalld
0x00:介绍利用手法的背景:houseofstorm是一种结合了unsortedbinattack和Largebinattack的攻击技术,其基本原理和Largebinattack类似。但不同的是,Largebinattack只可以在任意地址写入堆地址,而houseofstorm则可以导致任意地址分配chunk,也就是说可以造成任意地址写的后果,危害性大。不过,houseofstorm虽然危害大,但其利用条件也是十分苛刻的。该利用手法适用于glibc2.28及以下的版本,因为unsortedbinattack在glibc2.29中已失效。 利用条件:1.需要unsortedbin中的bk指针
0x00:介绍利用手法的背景:houseofstorm是一种结合了unsortedbinattack和Largebinattack的攻击技术,其基本原理和Largebinattack类似。但不同的是,Largebinattack只可以在任意地址写入堆地址,而houseofstorm则可以导致任意地址分配chunk,也就是说可以造成任意地址写的后果,危害性大。不过,houseofstorm虽然危害大,但其利用条件也是十分苛刻的。该利用手法适用于glibc2.28及以下的版本,因为unsortedbinattack在glibc2.29中已失效。 利用条件:1.需要unsortedbin中的bk指针
攻防世界pwn1题解下载附件,file命令识别文件为64位,checksec命令查看程序保护情况,如图,有Canary和NX保护。在ida64中打开程序,程序的主要功能有两个:存储用户输入的字符串内容打印用户输入的字符串内容特别的注意到,字符串数组大小为136(0x88),而read运行的最大输入大小为0x100,如图中红色框标注,因此可能存在栈溢出。同时puts可以将输入打出,因此可以想到借此泄露出canary值。在汇编程序40091C地址处,可以看到canary值保存在rbp上8字节处(即紧邻rbp)。GCC的canary,x86_64下从fs:0x28偏移处获取,32位下从gs:0x14
攻防世界pwn1题解下载附件,file命令识别文件为64位,checksec命令查看程序保护情况,如图,有Canary和NX保护。在ida64中打开程序,程序的主要功能有两个:存储用户输入的字符串内容打印用户输入的字符串内容特别的注意到,字符串数组大小为136(0x88),而read运行的最大输入大小为0x100,如图中红色框标注,因此可能存在栈溢出。同时puts可以将输入打出,因此可以想到借此泄露出canary值。在汇编程序40091C地址处,可以看到canary值保存在rbp上8字节处(即紧邻rbp)。GCC的canary,x86_64下从fs:0x28偏移处获取,32位下从gs:0x14
Pwn题做题流程使用checksec检查ELF文件保护开启的状态IDApro逆向分析程序漏洞(逻辑复杂的可以使用动态调试)编写python的exp脚本进行攻击(若攻击不成功)进行GDB动态调试,查找原因(若攻击成功)获取flag,编写Writeup一般都会在C代码开头设置setbuf(stdout,0)表示设置printf缓冲区为0,有就输出而不是等到输出\n时一块输出ebp+0x4存放函数中第一个局部变量,ebp-0x4是返回地址ebp-0x8存放函数第一个参数栈帧基本知识下面解释一下下面的汇编代码(AT&T格式),首先push%ebp,保存调用者的调用者的ebp寄存器,move%esp,%
Pwn题做题流程使用checksec检查ELF文件保护开启的状态IDApro逆向分析程序漏洞(逻辑复杂的可以使用动态调试)编写python的exp脚本进行攻击(若攻击不成功)进行GDB动态调试,查找原因(若攻击成功)获取flag,编写Writeup一般都会在C代码开头设置setbuf(stdout,0)表示设置printf缓冲区为0,有就输出而不是等到输出\n时一块输出ebp+0x4存放函数中第一个局部变量,ebp-0x4是返回地址ebp-0x8存放函数第一个参数栈帧基本知识下面解释一下下面的汇编代码(AT&T格式),首先push%ebp,保存调用者的调用者的ebp寄存器,move%esp,%
一、前言在CTF比赛中,我们所能接触到的大部分都是x86、x86_64架构的题目,而在我开始接触IOT方向的研究以后发现智能设备所用到的则是ARM和MIPS架构为主。本篇文章在介绍前置知识的基础上通过CTF的ARM架构类型题带读者更好的入门ARMPWN的世界。二、前置知识指令集Intel和ARM之间的区别主要是指令集,Intel采用复杂指令集而ARM则是精简指令集,精简指令集通过减少每条指令的时钟周期来缩短执行时间可以更快的执行指令,但因为指令较少因此在实现功能时会显得比Intel冗长。寄存器寄存器是ARM架构的一个重点,在x86架构上指令可以直接对内存的数据进行操作,而在ARM架构中必须将内
一、前言在CTF比赛中,我们所能接触到的大部分都是x86、x86_64架构的题目,而在我开始接触IOT方向的研究以后发现智能设备所用到的则是ARM和MIPS架构为主。本篇文章在介绍前置知识的基础上通过CTF的ARM架构类型题带读者更好的入门ARMPWN的世界。二、前置知识指令集Intel和ARM之间的区别主要是指令集,Intel采用复杂指令集而ARM则是精简指令集,精简指令集通过减少每条指令的时钟周期来缩短执行时间可以更快的执行指令,但因为指令较少因此在实现功能时会显得比Intel冗长。寄存器寄存器是ARM架构的一个重点,在x86架构上指令可以直接对内存的数据进行操作,而在ARM架构中必须将内