Day 05 格式化字符串漏洞
格式化字符串漏洞1. 漏洞原理在 C 语言中,printf 这一类函数会根据传入的 格式化字符串(format string)解析参数,例如: 1printf("hello %s\n", name); 但如果程序员直接写成: 1printf(input); 而没有提供额外参数,用户输入就会直接被当成格式化字符串解析。这时攻击者可以通过特殊的格式符(如 %p、%s、%n)来读取或写入内存,从而造成严重漏洞。 2. 基本利用方式(1) %p —— 打印栈上的地址 %p 会从栈上依次取出参数并以指针形式打印,不会解引用。 在没有参数的情况下,printf 还是会从栈上取值,因此我们能通过连续输入多个 %p 来泄露栈上的内容。 示例: 12输入: %p #打印二参的地址 输入: %7$p #打印第八个参数的地址 (2) %s —— 打印指定地址的字符串 %s 会把栈上的值当作 指针,然后尝试打印这个地址对应的字符串(解引用)。 示例: 1输入: %4$s #打印第五个参数解引用后的值 表示取栈上第 5 个参数的值作为地址,...
Day 04 shellcode之手写汇编小tips
Shellcode 汇编小 Tips如果shellcraft不适用,我们往往需要手写汇编构造更简短的 shellcode。本文整理了一些小技巧,帮助你快速写出合适的 shellcode。 前置知识1.mmap 与可执行内存有些题目会先用 mmap 给我们一块可读可写可执行的内存,比如: 1secret = (__int64)mmap((void *)0x111000, 0x1000uLL, 7, 34, -1, 0LL); 第一参数:映射地址(0 表示随机,>0x10000 时映射到自己) 第二参数:长度 第三参数:保护权限(7 = r + w + x=1+2+4) 第五参数:文件句柄(-1 表示匿名) 我们就可以把 shellcode 写入到这片内存里并执行。 2. 常见 syscall 编号Linux x64 下,常用的系统调用号: read = 0 write = 1 open = 2 execve = 59 (0x3b) 执行系统调用的一般步骤: 12345mov rax, <sys...
Day 03 shellcode之:板子做pwn,易如反掌
shellcraft杂谈1. 什么时候考虑写 shellcode?在 pwn 题里,是否写 shellcode一般要看是否能满足以下条件: 能把可控字节放进一块可执行内存:如程序把输入放到栈/堆且该段 可执行(NX 关闭);或能把内存权限改为可执行(有mprotect, mmap函数)。 所以写入shellcode前要先检查一下,确保shellcode写入到可执行内存中。若以上条件不满足,更适合探索其他路线。 2. shellcraft 的三个常用组件 shellcraft 是pwntools 里的一个模块(板子),会根据体系结构生成汇编片段。以下均以x64架构为例。 1context.arch = 'amd64' 2.1 shellcraft.sh() 作用:构造执行 execve("/bin/sh", 0, 0) 的 shellcode。 适用:允许 59 号系统调用、无 seccomp 限制。 用法示例: 123shellcode = shellcraft.sh() # execve("/...
Day 02 程序保护机制即绕过思路
ELF 文件的常见保护机制及绕过思路在 Pwn题目中,ELF(Executable and Linkable Format)文件通常会开启多种保护机制,以抵御常见的漏洞利用手段。理解这些保护机制的原理、检测方法及绕过思路,是成功解题的核心前提。本文将系统梳理 PWN 题目中主流的 ELF 保护机制,并详细分析对应的绕过方案。 前置须知 system("sh")、system("/bin/sh")、execve("/bin/sh", 0, 0)等函数可以用来获取 shell 权限。得到shell权限之后就可以cat flag了。 检测方式123checksec pwn # pwn为目标ELF文件# 如果报错可以使用checksec --file=pwn 输入以上代码会在终端里显示出ELF的保护机制。 主要保护机制及绕过思路一、NX(No-eXecute)保护:栈 / 堆不可执行1. 保护原理NX(No-eXecute,不可执行)是最基础的 ELF 保护机制之一,其核心作用是标记栈、堆等数据区域为 “不可执行...
Day 01 pwn环境配置
Ubuntu 下 Pwn 环境配置Pwn 是 CTF(Capture The Flag)竞赛中的重要方向,主要涉及二进制漏洞利用,而一套完善的 Pwn 环境是开展 Pwn 学习和竞赛的基础。本教程将带领大家在 Ubuntu 系统中,通过一系列命令逐步完成 Pwn 环境的配置,涵盖基础依赖库、工具安装以及关键辅助工具部署,即使是新手也能轻松跟随操作。 一、环境配置前的准备在开始配置 Pwn 环境前,请确保你的 Ubuntu 系统处于正常联网状态,因为后续所有操作都需要通过网络下载相关软件包和工具。同时,建议以具有 sudo 权限的用户登录系统,避免因权限不足导致命令执行失败。打开 Ubuntu 的终端(可以通过快捷键Ctrl + Alt + T快速调出),接下来我们将分四个步骤执行命令完成配置。 二、分步执行命令配置环境步骤 1:安装基础依赖库与常用工具这一步是环境配置的基础,我们需要更新系统软件源并升级已安装的软件,同时安装编译工具、编程语言环境、文本编辑器、调试工具以及必要的库文件,这些工具和库文件将为后续 Pwn 工具的安装和使用提供支持。 在终端中粘贴以下命令并回车执行(命...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment