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