CTF之PWN
文章平均质量分 94
《CTF特训营:技术详解、解题方法与竞赛技巧》
「已注销」
这个作者很懒,什么都没留下…
展开
-
竞态条件漏洞实验
目录预备知识实验目的实验环境实验步骤一实验步骤二实验步骤三实验步骤四预备知识1.竞态条件(race condition),从多进程间通信的角度来讲,是指两个或多个进程对共享的数据进行读或写的操作时,最终的结果取决于这些进程的执行顺序。2.在ubuntu的11.04或者12.04版本默认配置已经开启了对竞态条件漏洞的保护策略。这个保护策略严格限制了在什么情况下可以去跟踪操作一个符号链接指向的文件。帮助文档中对这个策略是这么描述的:“在所有人都可写的目录(比如说/tmp目录)中存在的符号链接,被链接的文件原创 2022-01-12 17:20:46 · 630 阅读 · 0 评论 -
通过write实现信息泄漏
目录预备知识一、GOT与PLT二、信息泄漏的实现三、libc.so.6文件的作用四、扩展阅读实验目的实验环境实验步骤一漏洞分析实验步骤二通过write实现信息泄漏实验步骤三获取服务器控制权限预备知识一、GOT与PLTGOT(Global Offset Table,全局偏移表)是Linux ELF文件中用于定位全局变量和函数的一个表。PLT(Procedure Linkage Table,过程链接表)是Linux ELF文件中用于延迟绑定的表,即函数第一次被调用的时候才进行绑定。所谓延迟绑定,就是当函原创 2022-01-12 16:39:32 · 559 阅读 · 0 评论 -
格式化(字符串)溢出实验
目录实验目的预备知识什么是格式化字符串?栈与格式化字符串如果参数数量不匹配会发生什么?访问任意位置内存在内存中写一个数字实验环境实验内容和步骤找出secret[0]的值修改secret[0]的值修改secret[0]为期望值实验目的格式化字符串漏洞是一个很古老的漏洞了,现在几乎已经见不到这类漏洞的身影,但是作为漏洞分析的初学者来说,还是很有必要研究一下的,因为这是基础啊!!!所以就有了这个实验了。我实验环境都搭好了,就差你来跟我搞二进制了!%>.<%格式化字符串漏洞是由像printf(us原创 2022-01-12 15:37:15 · 862 阅读 · 0 评论 -
ARM漏洞利用技术五--堆溢出
目录预备知识1.关于ARM实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识1.关于ARMARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,匹配其主要设计目标为低成本、高性能、低耗电的特性。实验目的通过该实验了解堆溢出,包括i原创 2022-01-11 15:21:59 · 671 阅读 · 0 评论 -
构建栈帧绕过NX选项
目录预备知识一、栈帧二、NX选项三、扩展阅读实验目的实验环境实验步骤一通过GCC编译选项控制NX的开启和关闭实验步骤二溢出点分析实验步骤三编写漏洞利用代码预备知识本实验要求实验者具备如下的相关知识。一、栈帧在高级语言中,当函数被调用时,系统栈会为这个函数开辟一个栈帧,并把它压入到栈里面。新开辟的栈帧中的空间被它所属的函数所独占,当函数返回的时候,系统栈会清理该函数所对应的栈帧以回收栈上的内存空间。每个函数都拥有自己独占的栈帧空间,有两个特殊的寄存器用于标识栈帧的相关参数:1.ESP寄存器,永远指原创 2022-01-11 11:28:19 · 489 阅读 · 0 评论 -
栈溢出覆盖返回地址实践
目录预备知识1.关于栈溢出的一些基础知识2.对“栈”简单介绍实验目的实验环境实验步骤一使用Olldbg动态调试程序,观察栈溢出的过程实验步骤二预备知识1.关于栈溢出的一些基础知识如果你关注网络安全,那么你一定听说过缓冲区溢出。简单的说,缓冲区溢出就是超长的数据向小缓冲区复制,导致数据撑爆了小缓冲区,这就是缓冲区溢出。而栈溢出是缓冲区溢出的一种,也是最常见的。只不过栈溢出发生在栈,堆溢出发生在堆,本质都是一样的。2.对“栈”简单介绍从计算机科学的角度讲,栈指的是一种数据结构,是一种先进后出的数据表。原创 2022-01-10 15:41:55 · 1070 阅读 · 2 评论 -
高级栈溢出技术—ROP实战(ret2csu)
目录预备知识关于ROP本系列rop实战题目的背景ret2csu涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmpori原创 2022-01-09 21:55:01 · 974 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(pivot)
目录预备知识关于ROP本系列rop实战题目的背景pivot涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmporium原创 2022-01-09 21:24:07 · 671 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(fluff)
目录预备知识关于ROP本系列rop实战题目的背景fluff涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmporium原创 2022-01-09 18:18:00 · 712 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(badchars)
目录预备知识关于ROP本系列rop实战题目的背景badchars涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmpor原创 2022-01-09 16:51:02 · 796 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(write4)
目录预备知识关于ROP本系列rop实战题目的背景write4涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmporiu原创 2022-01-08 16:46:26 · 568 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(callme)
目录预备知识关于ROP本系列rop实战题目的背景callme涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmporiu原创 2022-01-08 16:01:38 · 770 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(split)
目录预备知识关于ROP本系列rop实战题目的背景split涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmporium原创 2022-01-07 21:46:30 · 683 阅读 · 0 评论 -
高级栈溢出技术—ROP实战(简介及ret2win)
目录预备知识关于ROP本系列rop实战题目的背景ret2win涉及知识点实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。本系列rop实战题目的背景来自ROPEmpori原创 2022-01-07 20:54:36 · 1300 阅读 · 0 评论 -
CTF-PWN练习之通用跳转技术
目录预备知识一、相关实验二、strdup函数三、grep命令实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识一、相关实验本实验要求您已经认真学习和完成了《CTF PWN练习之绕过返回地址限制》。二、strdup函数strdup可以用于复制一个字符串,我们通常使用字符串时会使用strcpy,这要求已经定义好了一个接收缓冲区。而strdup只接受一个参数,也就是要复制的字符串的地址,strdup()会先用malloc()配置与参数字符串相同大小的的空间,然后原创 2022-01-06 10:57:43 · 2306 阅读 · 2 评论 -
CTF-PWN练习之绕过返回地址限制
目录预备知识一、相关实验二、__builtin_return_address函数三、理解多层跳转实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识本实验要求实验者具备如下的相关知识。一、相关实验本实验要求您已经认真学习和完成了《CTF PWN练习之执行Shellcode》。二、__builtin_return_address函数__builtin_return_address函数接收一个参数,可以是0,1,2等。__builtin_return_addr原创 2022-01-06 09:56:04 · 491 阅读 · 0 评论 -
CTF-PWN练习之执行Shellcode
目录预备知识一、相关实验二、Shellcode三、执行Shellcode实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识本实验要求实验者具备如下的相关知识。一、相关实验本实验要求您已经认真学习和完成了《CTF PWN练习之返回地址覆盖》。二、ShellcodeShellcode指缓冲区溢出攻击中植入进程的恶意代码,这段代码可以弹出一个消息框,也可以在目标机器上打开一个监听端口,甚至是删除目标机器上的重要文件等。Shellcode通常需要使用汇编语言进原创 2022-01-05 21:39:32 · 1545 阅读 · 0 评论 -
CTF-PWN练习之返回地址覆盖
目录预备知识一、相关实验二、函数调用约定三、基本的缓冲区溢出攻击模型实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识一、相关实验本实验要求您已经认真学习和完成了《CTF-PWN练习》、《CTF-PWN练习之精确覆盖变量数据》、《CTF PWN练习之函数指针改写》等试验。二、函数调用约定函数调用约定描述了函数传递参数的方式和栈协同工作的技术细节,不同的函数调用约定原理基本相同,但在细节上是有差别的,包括函数参数的传递方式、参数的入栈顺序、函数返回时由谁来平原创 2022-01-05 16:48:53 · 848 阅读 · 0 评论 -
CTF-PWN练习之函数指针改写
目录预备知识一、相关实验二、objdump使用三、函数指针实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识一、相关实验本实验要求您已经认真学习和完成了《CTF-PWN练习》以及《CTF-PWN练习之精确覆盖变量数据》。二、objdump使用使用objdump工具可以查看一个目标文件的许多内部信息,objdump有许多可选的参数选项,通过控制这些参数选项可以输出不同的文件信息。本实验中,在对二进制程序进行分析时,我们可以使用objdump获取二进制程序中原创 2022-01-05 11:11:38 · 514 阅读 · 0 评论 -
CTF-PWN练习之环境变量继承
目录预备知识一、相关实验二、环境变量参数三、Python基础知识四、Shell基础知识实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识一、相关实验本实验要求您已经认真学习和完成了《CTF-PWN练习》以及《CTF-PWN练习之精确覆盖变量数据》。二、环境变量参数在Linux/Windows操作系统中,每个进程都有其各自的环境变量设置。缺省情况下,当一个进程被创建时,除了创建过程中的明确更改外,它继承了其父进程的绝大部分环境变量信息。扩展的C语言main原创 2022-01-04 15:20:07 · 908 阅读 · 0 评论 -
CTF-PWN练习之精确覆盖变量数据
目录预备知识一、相关实验二、命令行参数三、xargs命令四、字节序实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三发起溢出攻击预备知识本实验要求实验者具备如下的相关知识。一、相关实验本实验要求您已经认真学习和完成了《实验一:CTF-PWN练习》。二、命令行参数C语言的main函数拥有两个参数,为int类型的argc参数,以及char**类型argv参数。其中argc参数的值表示命令行参数的个数,而argv则指向一个字符串数组,该数组存储了具体的命令行参数的内容。注意程序本原创 2022-01-04 11:43:55 · 1209 阅读 · 0 评论 -
CTF-PWN练习
目录预备知识了解CTFLinux管道Python基础gdb调试器汇编基础实验目的实验环境实验步骤一源码审计实验步骤二使用gdb调试程序实验步骤三体验溢出攻击效果预备知识了解CTFCTF的全称是Capture The Flag,即夺旗的意思,因此CTF比赛也称为夺旗比赛。CTF夺旗赛是计算机安全竞赛的一种形式,CTF比赛主要表现以下几个技能上:逆向工程、密码学、ACM编程、Web漏洞、二进制溢出、网络和取证等。在国际CTF赛事中,二进制溢出也称之为PWN。PWN是一个黑客语法的俚语词,自“own”这个原创 2021-12-20 15:49:01 · 711 阅读 · 0 评论 -
约束求解器Z3
目录预备知识1.关于z3实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识1.关于z3Z3是一个微软出品的开源约束求解器,能够解决很多种情况下的给定部分约束条件寻求一组满足条件的解的问题(可以简单理解为解方程的感觉,虽然这么比喻其实还差距甚远,请勿吐槽),功能强大且易于使用,本文以近期的CTF题为实例,向尚未接触过约束求解器的小伙伴们介绍Z3在CTF解题中的应用。Z3约束求解器是针对Satisfiability modulotheories Problem的一种通用求解器。所谓SMT问题,在Z3原创 2021-12-17 17:17:53 · 1597 阅读 · 0 评论 -
初识Ghidra
目录预备知识1.关于Ghidra实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识1.关于Ghidra2019年3月6日,美国国家安全局(NSA)免费向公众开放其逆向工程工具GHIDRA,今年三月份举办的2019年RSA大会上,美国国家安全局首次公开介绍并演示了这款软件的使用,源码将于今年3月登陆代码托管平台GitHub。NSA指出,GHIDRA框架的本质,是一款适用于Windows、Mac和Linux平台的反汇编程序。它能够将可执行文件分解为汇编代码,以进行分析。对于希望深入了解恶意软件,以查看原创 2021-12-17 16:32:10 · 1388 阅读 · 0 评论 -
Fuzz之AFL
目录预备知识关于AFL实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识关于AFLAmerican fuzzy lop号称是当前最高级的Fuzzing测试工具之一,由谷歌的Michal Zalewski所开发。通过对源码进行重新编译时进行插桩(简称编译时插桩)的方式自动产生测试用例来探索二进制程序内部新的执行路径。与其他基于插桩技术的fuzzers相比,afl-fuzz具有较低的性能消耗,有各种高效的fuzzing策略和tricks最小化技巧,不需要先行复杂的配置,能无缝处理复杂的现实中的程序。原创 2021-12-11 23:04:47 · 2732 阅读 · 0 评论 -
Fuzz之SPIKE
目录预备知识1.什么是FUZZ?2.什么是SPIKE实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识1.什么是FUZZ?fuzz测试是将故意格式错误的数据发送到程序以便在应用程序中生成故障或错误的过程。软件开发人员用这个测试自己的代码漏洞,与二进制和源代码分析一起,模糊测试是发现可利用软件漏洞的主要方式之一。有许多流行的和免费的软件fuzzer可用,本文介绍的是SPIKE。2.什么是SPIKE从技术上讲,SPIKE实际上是一个模糊器创建工具包,它提供了API,允许用户使用C语言基于网络的协议原创 2021-12-10 17:07:22 · 555 阅读 · 0 评论 -
基于zio编写PWN代码
目录预备知识一、CTF PWN基础知识二、zio简介1.导入zio库2.与远程服务器建立网络连接3.从远程服务器读取数据4.向远程服务器发送数据5.与服务器建立shell交互三、pip四、checksec脚本实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识一、CTF PWN基础知识《CTF PWN进阶训练》系列实验要求实验者已经了解如下相关的基础知识,包括:1.理解基本的汇编指令及语句;2.掌握IDA Pro的基本用法;3.熟悉网络编程(socket)基本原理;4.编写简单的Python原创 2021-12-09 15:45:19 · 2028 阅读 · 0 评论 -
基于pwntools编写pwn代码
目录预备知识pwnpwntools实验目的实验环境实验步骤一1.Pwntools安装及模块(已装)2.常用模块详细介绍实验步骤二实验步骤三预备知识pwn“Pwn”是一个黑客语法的俚语词,是指攻破设备或者系统。发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音——砰的一声,被“黑”的电脑或手机就被你操纵。以上是从百度百科上面抄的简介,而我个人理解的话,应该就是向目标发送特定的数据,使得其执行本来不会执行的代码,前段时间爆发的永恒之蓝等病毒其实也算得上是pwn的一种。pwntoolspwntoo原创 2021-12-01 23:14:55 · 3378 阅读 · 0 评论 -
缓冲区溢出漏洞调试与分析
目录预备知识实验目的实验环境实验步骤一实验步骤二预备知识war-ftpd 1.65存在缓冲区溢出漏洞,当登录时用户名过长时就会发生缓冲区溢出,程序进而崩溃。本实验正是利用这一点使用调试工具cdb找出溢出时相应寄存器记录的地址,通过利用shellcode构造用户名字符串,使得war-ftpd程序接收此用户名时发生溢出进而执行shellcode,达到攻击目的。实验目的1)掌握缓冲区溢出原理;2)掌握常用的缓冲区溢出方法;3)理解缓冲区溢出的危害性;4)掌握防范和避免缓冲区溢出攻击的方法。实验环境原创 2021-11-30 10:21:52 · 4094 阅读 · 0 评论 -
缓冲区溢出基础与实践
目录实验目的预备知识缓冲区溢出MS12-020漏洞Metasploit工具实验环境实验步骤一实验步骤二实验步骤三实验目的1)理解缓冲区溢出的原理与危害;2)了解防范缓冲区溢出的基本方法;3)了解常见的缓冲区溢出攻击。预备知识缓冲区溢出缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下了隐患。操作系统所使用原创 2021-11-29 19:10:21 · 1135 阅读 · 1 评论