11k10 分钟

为防止题目难度跨度太大,135-140 为演示题目阶段 # pwn135 # 题目 题目描述: 如何申请堆? Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled 演示了 malloc 、 calloc 、 realloc 函数 区别: 函数 malloc 不能初始化所分配的内存空间,而函数 calloc 能 函数 calloc () 会将所分配的内存空间中的每一位都初始化为零 realloc 可以对给定的指针所指的空
20k18 分钟

# 有收获的题目 pwn69(沙盒机制) pwn76(逻辑分析题,栈迁移但是只覆盖了 ebp) pwn79(ret2reg, 利用 call /jmp 跳转到保存 shellcode 的地址的寄存器来执行) # pwn69(沙盒机制) # 题目 题目描述: 可以尝试用ORW读flag flag文件位置为/ctfshow_flag Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x400000
21k19 分钟

# 有所收获的题目: pwn66 (shellcode 开头为 \x00 ) pwn67 (32 位 nop sled ->shellcode) # pwn58(shellcode) # 题目 题目描述: 32位 无限制 32 位程序,开启保护: Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments 有可执行段 main(反编译未成功)
2.2k2 分钟

# 1. 查看程序 32 位程序,开启了 NX,ida32 查看, main函数 : int __cdecl main(int argc, const char **argv, const char **envp) { int v4; // [esp+1Ch] [ebp-14h] BYREF puts("ROP is easy is'nt it ?"); printf("Your input :"); fflush(stdout); return read(0, &v4, 10
1.7k2 分钟

# 1. 查看程序 ida32 查看 main 函数: cint __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // eax char s2[11]; // [esp+1Dh] [ebp-13h] BYREF int v6; // [esp+28h] [ebp-8h] int i; // [esp+2Ch] [ebp-4h] v6 = 10; puts("
8.8k8 分钟

# 1. 基础命令 # 1. ls 命令(查看当前目录文件) 这里我创建一个 .2021cyb 的隐藏文件,利用 ls -all 查看文件和执行权限 # 2. chmod 命令(修改权限) 在上面利用 ls 命令查看文件 .2021cyb 的权限(d 表示文件夹,拥有者 rwx;组群 r-x;其他 r-x), 改变组群权限为 可读可写 ,其他权限为 可执行 chmod 761 .2021cyb 权限: 4 对应 r;2 对应 w;1 对应 x(也就是二进制 100,010,001) # 3. cd 命令(更改当前目录) 进入前面创建的文件 cd .2021cyb 从该目录进
2.3k2 分钟

# Move 一道栈迁移的题 开启了 NX 无法写入 shellcode 去执行 vunl 函数里的 read 可以进行溢出,但是只能溢出 0x10 个字节,不能满足我们构造 rop 的大小,但是 main 函数里第一个 read 写 0x20 个字节往 bss 段内,这个大小可以用来构造 rop,所以要进行栈迁移 # 栈迁移: 栈迁移要利用 leave 和 ret leave: mov esp , ebp pop ebp ret: pop eip 首先要利用栈迁移需要通过溢出来改写部分数据,将 ebp 的值改为伪造的栈的栈顶, ret 一般改到 read 处来改写伪造的栈的
2k2 分钟

# 1. std::allocator 动态内存管理 - 分配器, std::allocator 类模板是所有标准库容器所用的默认分配器 ( Allocator ) ,若不提供用户指定的分配器。默认分配器无状态,即任何给定的 allocator 实例可交换、比较相等,且能解分配同一 allocator 类型的任何其他实例所分配的内存。 在 C++ 中,std::allocator 是一个模板类,用于分配和释放内存。它是标准库中的一部分,并用于动态分配和管理内存块。 std::allocator 模板类的参数是要分配的对象类型。在这种情况下,std::allocator<char
1.4k1 分钟

# 1.ubuntu22.10(这里对 ubuntu 进行更新) 清华源用 update 报错(出现 404) 换成中科大的源就好了 (23.04 的源) deb https://mirrors.ustc.edu.cn/ubuntu/ lunar main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ lunar main restricted universe multiverse deb https:&#x
21k19 分钟

# pwn47(ret2libc) # 题目: ez ret2libc 32 位程序保护只有 Partial RELRO cint ctfshow()&#123; char s[152]; // [esp+Ch] [ebp-9Ch] BYREF puts("Start your show time: "); gets(s); return puts(s);&#125;有 gets 函数,然后也执行了 puts,可以进行泄露得到 libc 基址 nfrom pwn import *from LibcSearcher import *