06_利用printf漏洞突破canary保护


#include<stdio.h> void exploit() { system("/bin/sh"); } void func() { char str[0x20]; read(0, str, 0x50); printf(str); read(0, str

05_格式化字符串发生的条件


标准输出函数 fprintf、printf、sprintf 和 dprintf 是 C 语言中的标准输入输出函数,用于格式化输出数据到不同的目标(如文件、标准输出、字符串等)。它们都属于格式化输出家族,核心原理是基于格式化字符串输出特定的变量值。下面是它们的详细介绍: 1. fprintf int

04_printf漏洞概述以及调试


https://bbs.kanxue.com/thread-250858.htm 大神的格式化字符串文章 printf 格式化字符串漏洞是一类较为常见的安全漏洞,主要出现在程序通过不安全的方式处理用户提供的输入,并将其直接传递给 printf 系列函数(例如 printf、sprintf、fprin

03_Canary保护


gdb基本命令复习 基本调试控制 s / step:单步执行,进入函数内部。 si:单步执行一条汇编指令,进入函数内部。 n / next:单步执行,不进入函数,直接执行下一条语句。 ni:单步执行一条汇编指令,不进入函数。 c

02_保护与溢出


保护机制 1. NX (No-eXecute) 简介:NX保护指的是将内存分为可执行和不可执行区域,从而禁止在数据区域(如栈或堆)上执行代码。 防护目的:防止代码注入攻击(如栈溢出时执行shellcode)。 绕过方式: 利用ROP (Return Oriented Programming),通过调

01_基础理论


汇编 AT汇编和Intel汇编通常指的是用于编写x86架构处理器汇编语言的两种不同的语法风格。 AT&T汇编语法: AT&T语法起源于Unix系统的汇编器,它的标志之一是操作数的顺序:源操作数在左,目标操作数在右。 操作数大小由操作码的后缀指明,例如movl表示移动一个长整数(32位)。 内存操作数