1.6k 1 分钟

# 记录两道 PWN 题 给新生出题,出累了,随便看了两个 PWN 题,发现这两个 PWN 都值得记录一下 ONE # [NISACTF 2022]shop_pwn 题目标签: pthread_create 多线程竞争 执行程序如下: 放入 IDA 看一下具体的函数: 看一下主要的函数 脚本如下: 这里利用了 pthread_create 创建进程,那么如果我们指令发送得快的话,那么就可以实现第一次售卖功能执行的时候正在 unsleep,接着执行第二次售卖功能,那么就能卖出两次得到可以购买 flag 的金钱了 pwntool 的 sendline 发送指令很快 from...
15k 13 分钟

# MISC # 签到] Welcome # Pixel_art from PIL import Image image = Image.open('image.png') width, height = image.size for y in range(height): for x in range(width): r, g, b = image.getpixel((x, y)) if r == 46: print('.',end="") elif r ==...
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 下的...