1.3k1 分钟

# 概述 由于在 pwn 题中有时候不给 libc,那么需要我们自己通过泄露函数地址来获得 libc 的基地址,而往往 LibcSearcher 无法准确的得到 libc 版本,那么我们就需要利用 DynELF,这是 pwntools 在早期版本就提供了一个解决方案 ——DynELF 类;利用方式与 ret2libc 类似,都是泄露函数地址来计算得到 libc 基址,通俗地讲,DynELF 就是通过程序漏洞泄露出任意地址内容,结合 ELF 文件的结构特征获取对应版本文件并计算对比出目标符号在内存中的地址 并且: write 函数是最理想的,因为 write 函数的特点在于其输出完全由其参数 s
7k6 分钟

# 概述 沙盒机制也就是我们常说的沙箱,英文名 sandbox ,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。 在 ctf 比赛中,pwn 题中的沙盒一般都会限制 execve 的系统调用,这样一来 one_gadget 和 system 调用都不好使,只能采取 open/read/write 的组合方式来读取 flag。当然有些题目可能还会将上面三个系统调用砍掉一个,进一步限制我们获取到 flag. # 1.prctl 函数调用 prctl 是进
871 分钟

chunk 的 p 位设为 1 即上一个 chunk 被使用并且上一个 chunk 可以使用 pre_size 的空间 (用来储存前一个物理相邻的 chunk 的数据 ,(两个都空闲才合并)
19k17 分钟

# <center>PWN 小技巧 </center> # 1.64 位程序与 32 位程序 payload ​ 64 位程序 payload 要先用 pop_rdi 覆盖 ret 然后依次是 调用函数的参数,调用函数本身,最后是返回地址(32 位程序传参不需要用寄存器) 32 位程序是调用函数 先函数本身 ,然后是函数返回地址,再是参数,然后接着是函数本身再是返回地址,最后是参数.... 这种循环(返回地址可以用 pop_ret 这种代替) npayload=b"\x00"*(0x50+8)+p64(rdi_ret)+p64(p
15k13 分钟

这里用来记录在 pwn 题中一些 C 语言函数的作用和一些函数的漏洞 # 1. atol、 atoi、atoq cint atoi(const char *nptr);long atol(const char *nptr);long long atoll(const char *nptr);long long atoq(const char *nptr);atoi: 把字符串nptr转换为int atol: 把字符串nptr转换为 long int/long long int atoq: # 2.__readfsqword(0x28u) 这段代码是通常用于 alarm 函数
3.4k3 分钟

# ret2csu # 原理 64 位程序中,函数的前 6 个参数是通过寄存器传递的,但是大多数时候我们很难找到每个寄存器对应的 gadges。这时候,我们可以利用 x64 下的__libc_csu_init 中的 gadgets。 这个函数是用来对 libc 进行初始化操作的,而一般的程序都会调用 libc 函数,所以这个函数一定会存在。 # 下面借用别人在 IDA 摘出来的__libc_csu_init 函数的汇编指令 .text:00000000004011B0 ; void _libc_csu_init(void) .text:00000000004011B0
6.8k6 分钟

# 1. 前置知识 # 2. 环境搭建 这里有个坑,在 php8.1.12 版本有些代码行不通,应该是版本问题,后来改成 php7.2.24 后就可以了,所以下面的配置最好按照 7.2.24 来进行 # 1.PHP 拓展安装 下面是是 PHP 拓展模块的安装流程,我这个是在 ubuntu22.04 下安装的 首先是安装 php,以及 php 开发包 hsudo apt install php php-dev安装完后利用 php --version 查看当前 php 版本 我这里是 PHP 8.1.12-1ubuntu4.3 (cli) , 所以从下面的链接找到 8.1.12 的源码下载下来,
1.2k1 分钟

#buuctf ##[HarekazeCTF2019]baby_rop2 ##pwn2_sctf_2016 ##<center>31.jarvisOJ_level3(ret2libc)</center> ####1. 下载源文后查看文件保护和位数 ####2. 发现是 32 位程序,开启了 NX (栈不可执行) ####,利用 ida 反编译查看程序 C 语言代码 #### 发现有 vul 函数进入查看 ####3. 发现有 write 和 read 函数,其中 read 函数可以进行栈溢出,可以对此利用 注意:write (1, 输出地址,输
4.3k4 分钟

# ciscn_s_3 # 1. 下载附件后查看程序信息 可以看到是 64 位程序,并且开启了 NX # 2. 利用 ida 反汇编 发现有个 vul 函数,进入查看 发现是 sys_read 函数,并且可以通过 sys_read 溢出,查看汇编代码 发现有 syscall,由此判断是系统调用,那么我们通过 控制寄存器 的方式来进行系统调用然后 getshell # 3. 漏洞利用分析 此处放上之前的文章:https://vvwwvv.cn/2023/08/29/Linux/%E7%B3%BB%E7%BB%9F%E8
1.7k2 分钟

# 查看程序 # 64 位程序,开启了 NX 有溢出漏洞, 变量为 char 型变量 没有后门函数, 那就 <font color=red> 去 libc 中找 execve 地址执行 </font> 偏移量为 136 write:write(1,输出地址,输出字节数) write(1,write_got,8) read:read(0,写入地址,写入字节数) read(0,bss_base,16) exp: from pwn import *fr