11k 10 分钟

# web 新手: 攻防世界 WEB 区复现: # robots:> robots.txt 文件是一个文本文件,使用任何一个常见的文本编辑器,比如 Windows 系统安装了 Notepad,就可以创建和编辑它 robots.txt 是一个协议,而不是一个命令。robots.txt 是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt 文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。 当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在...
3.8k 3 分钟

# NepCTF wp 第一次大型比赛,得到这个成绩也不错了。 { = 空格 # 1. misc: # 1.codes: 环境env要 en\ v绕过下 #include <stdio.h>extern char **en\viron;int main(){ int i = 0; while (en\viron[i] != NULL) { printf("%s\n", en\viron[i]); i++; } return 0;} #...
3.9k 4 分钟

# PWN_unlink 了解学习 # 原理: 我们在利用 unlink 所造成的漏洞时,其实就是对 chunk 进行内存布局,然后借助 unlink 操作来达成修改指针的效果。 注意这里的是修改指针 简单的介绍下 unlink,其实 ctfwiki 有介绍,这里简单介绍下: 1. 首先找到要进行unlink的chunk(这里记为P)的前后堆块, FD = P->fd, BK = P->bk。 2. 进行安全检查,glibc2.23的潦草判断条件如下 FD->bk == P, BK->fd == P。 3....
3k 3 分钟

# PWN uaf 了解学习 刚刚接触堆,发现在看题的时候,对与 C 语言要求还挺高,需要了解指针是怎么一回事。所以我决定,下面一道例题要好好分析源代码,了解各个函数调用的意义。 # 首先先声明一下什么叫 uaf: 参考 ctfwiki 原理 ¶ 简单的说,Use After Free 就是其字面所表达的意思,当一个内存块被释放之后再次被使用。但是其实这里有以下几种情况 内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃。 内存块被释放后,其对应的指针没有被设置为 NULL...
11k 10 分钟

# pwn 堆 bins 学习。 # 一、bin 链的介绍 bin 是一个由 struct chunk 结构体组成的链表。 前面介绍过,不同的 chunk 根据特点不同分为不同的 chunk,为了将这些 chunk 进行分类的管理,glibc 采用了 bin 链这种方式管理不同的 chunk。 不同的 bin 链是由 arena 管理的。 bin 链中的 chunk 均为 free chunk。 # 二、bin 链分类 根据 bin 链成员的大小不同,分为以下几类: fast bin 是单链表,其他都是双向链表。 Fast bin。 Unsorted bin。 Small...
10k 9 分钟

# canary 介绍: 在函数调用发生时,向栈帧内压入一个额外的随机 DWORD,这个随机数被称为 “Canary” 如果使用 IDA 反汇编的话,您可能会看到 IDA 会将这个随机数标注为 “Security Cookie”,在部分书籍的叙述中会用 Security Cookie 来引用这种随机数 Canary 位于 EBP 之前,系统还将在内存区域中存放一个 Canary 的副本 当栈中发生溢出时,Canary 将被首先淹没,之后才是 EBP 和返回地址 在函数返回之前,系统将执行一个额外的安全验证操作,被称作 “Security check” 在 Security check...
5.4k 5 分钟

# srop # srop 原理 # signal 机制 ¶ signal 机制是类 unix 系统中进程之间相互传递信息的一种方法。一般,我们也称其为软中断信号,或者软中断。比如说,进程之间可以通过系统调用 kill 来发送软中断信号。一般来说,信号机制常见的步骤如下图所示: 内核向某个进程发送 signal 机制,该进程会被暂时挂起,进入内核态。 内核会为该进程保存相应的上下文,主要是将所有寄存器压入栈中,以及压入 signal 信息,以及指向 sigreturn 的系统调用地址。此时栈的结构如下图所示,我们称 ucontext 以及 siginfo 这一段为 Signal...
4.4k 4 分钟

# 中级 ROP_CSU ret2csu 泄露 libc 地址之后利用 libc 中的 gadget getshell. ret2csu 配合 pop rax; syscall; 等 gadget 直接 GetShell. 开启 PIE 的情况下,利用 offset2lib 进行 ret2csu, 或者直接利用 libc 中的 gadget getshell. 只要动态连接都会有 _libc_csu_init 函数 # 原理 ¶ 在 64 位程序中,函数的前 6 个参数是通过寄存器传递的,但是大多数时候,我们很难找到每一个寄存器对应的 gadgets。 这时候,我们可以利用 x64 下的...
4.6k 4 分钟

# 国赛题复现 不同地区的国赛题,进行复现。— 简单 pwn 题 # 华北赛区: # RELRO 保护机制 1.RELRO 的保护机制可用于防护 GOT hijacking ,其全名为 Relocation Read-Only 。 2. 本题中 checksec 中为 Partial RELRO ,这种情况下, GOT 可写,即存在 GOT hijacking 的漏洞 3. 而保护的方式是设置为 Full RELRO ,这种情况下不会出现 lazy binding ,因为在 Load time 时会将所有 funciton resolve 完毕,并设置 GOT...
1.4k 1 分钟

# 题目复现 ——[深育杯 2021] find_flag pie 与 canary 同时开启,并且有格式化字符串。 # 检查程序: 保护很全面。 可以看的出,在第一处有格式化字符串漏洞。 # IDA 分析: 看了一下 mian 函数,将函数重命名,pwn 是我们有漏洞的地方。 可以看到 gets 函数可以进行栈溢出,但是有 canary 保护,所以我们需要泄露 canary,可以利用格式化字符串去泄露 canary 并覆写在栈上。 发现 backdoor。但是开了 pie,我们应该无法利用后们,但是好在只读变量(const 修饰的)和字符串变量放入 rodata...