# 总述 本篇文章主要讲解了栈迁移的原理和使用。 认识了利用 one_gadget 快速 getshell。 了解了和上一节不一样的 ret2reg,返回寄存器式的 rop 攻击。 学习了并且利用部分高级 ROP:ret2dl,SROP,BROP。 # 栈迁移 # 原理: 在栈溢出攻击中我们构造的 rop 链可能比溢出的长度还要长,导致没有办法把完整的 rop 链写入。这个时候就需要栈迁移,利用 ebp/rbp 来控制我们输入的地方,来扩展我们写入的 rop 链长度。 利用上一篇文章的程序,我们来看看怎么去栈迁移。 12345678910111213141516171819#include &
# 总述 本文讲解了 shellcode 的简单编写。 学习编写 shellcode,学习利用 shellcode 执行任务 # shellcode shellcode 是一段特别的代码,在很小的空间内执行任务。一般是一段机械码,用来执行获得 shell 的代码。 shellcode 可以看作是 rop 攻击的衍生,只是它是专门用来获得 shell 的一段特别的汇编代码,执行它去获得 shell。 Shellcode 编写方式基本有 3 种: 直接编写十六进制操作码(不现实)。 采用像 C 这样的高级语言编写程序,编译后,进行反汇编以获取汇编指令和十六进制操作码。 编译汇编程序,将该程序汇编
# 总述 本文主要讲解 pie 保护和 canary 保护机制。 了解基础了 pie 保护绕过。 了解三大 canary 绕过方法。 简单讲解了各个保护的用途很其影响。 # 保护机制 在 pwn 的过程中我们会遇到很多保护机制,这些机制会保护程序的运行,使我们的攻击不会那么轻松就可以达成,面对不同的保护机制,我们需要有不同的绕过方法,来实现正确的攻击。 # Full RELRO 保护原理,不允许你改写 got 表中的内容了。 影响:不能劫持 stack_chk_fail 函数来绕过 canary 了,不能在劫持动态链接里面已经调用过的函数。 # Canary 在栈的末尾加插入一个值,退出函数时
# 总述 本篇文章讲解两个小知识点:整数溢出,伪随机数 学习了,整数溢出原理和利用整数溢出调整判断数据。 了解了,伪随机数的生成和绕过方法:覆盖种子,利用相同 libc 去撞库得同一种子 伪随机数和整数溢出是两个小知识点,可以在一些题目中设置为前置关卡,为了不被拿捏还是要看看的。 # 整数溢出 # 原理: 整数在计算机中是使用固定的位数来存储的,例如常见的有 8 位、16 位、32 位或 64 位整数。 如果结果超出了该整数类型所能表示的范围,就会发生整数溢出。 在 C 语言中,整数的基本数据类型分为短整型 (short),整型 (int),长整型 (long),这三个数据类型还分为有符号和无
# 总述 本篇文章主要讲解格式化字符串漏洞的原理和利用。 讲解了如何利用格式化字符串去泄露内存,去读取栈上面的信息,读取任意地址的信息。 讲解了如何利用格式化字符去覆盖内存,去覆盖任意地址内存,去覆盖任意值。 讲解了 pwntools 工具:fmtstr_payload。 # 格式化字符串漏洞原理 简单谈谈我个人的理解: 格式化字符串函数:格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式,像这样的输出函数有下面这些: 函数 基本介绍 printf 输出到 stdout fprintf 输出到指定 FILE 流 vprintf 根据参数列表格式化输
# 总述 本篇文章将讲解 basic-ROP,来让新手用结合题目 exp 和图示法栈帧结构的方式来进行 pwn 基础的学习。 主要讲解了 ret2text,ret2system,ret2libc,ret2syscall,ret2csu 这些题目的基本结构和利用。 讲解了 ROPgadget 和 LibcSearch 这两个工具的使用。 讲解了程序中栈的结构,延迟绑定机制,ASLR(地址空间布局随机化)保护 希望这篇文章可以帮到你。 # 栈的结构 栈用于存储函数调用过程中的局部变量、函数参数、返回地址等信息。 当程序启动时,操作系统会为程序分配一块连续的内存区域作为栈空间。在大多数系统中,栈的
# 搭建的基础原理 搭建简单的个人博客主要是有四个内容: 博客生成框架;代码托管平台;站点部署服务;访问加速服务 # 博客生成框架 这个是一个应用程序,它帮助我们把我们的博客复杂的前端后端代码给简化,让我们可以用简单的手段输入一些内容来实现复杂的网站搭建,帮助我们减少编写:html,css,js 这三件套。这三件套才是网站的文件核心架构,但是我们自己从新编写太麻烦了,于是我们可以用生成框架减轻负担。 准备使用的是 hexo。 # 代码托管平台 对于我们自己的网站代码和文件,也就是上面说的三件套,我们需要一个平台来托管代码, 文件托管平台是一种在线服务平台,主要提供文件存储、共享和管理等功能 。
个人向 exp, 因为是暑假打的,后面复现的比较烦躁,所以不算 wp 大多都是只有 exp。 # 签到: nc 链接 cat flag # 只有 echo 1echo "$( <flag)"#可以把flag文件打出来 # ret2text 1234567from pwn import *import time#p=process("/home/feeling/ctf/exam/pwn1")p=remote("gz.imxbt.cn",20295)pay=b"A"*(0x20+8)+ p64(0x401130)
简单回顾一下这一年做的事吧。 # 一月 —— 六月 这一大段故事都在《给过去的自己留言》里面了。跳过。 高三,真是奇奇又妙妙啊,有好多好多事,又什么都没有事,太过纷乱和复杂了,最重要的高考也是在这个时候,给了我一个很大很大的打击,让我后面的三个月都没有缓过来,高考,确确实实的已经成为了中国青年心里面的一道坎,越过去或者被绊倒,总之这一道坎会是每一个普通的中国青年一辈子的记忆,它来的很快,走的也很冲忙,可能对于一辈子来说它什么都不算,也可能这就是决定了人的一辈子。高考理科失利的我也没有去到心仪的学校,内心也常常在出分后否定自己,自甘堕落,觉得人生已经被摧毁,像是一个做错事的小孩一样,不敢哭,也不
# 简单的签到 1234567891011121314from pwn import *p = remote('nc1.ctfplus.cn', 26071)p.send(b"1")#接收他发送的两数字data = p.recvuntil(b'*')v3_str = re.search(r'(\d+)', data.decode()).group(1)v3 = int(v3_str)data = p.recvuntil(b'=')v2_str = re.search(r'(\d+)&#