2.4k2 分钟

# pwn1 eval 漏洞利用参考: https://xuanxuanblingbling.github.io/ctf/pwn/2020/02/01/calc/ https://juniorprincewang.github.io/2017/10/01/pwnable-tw 之 calc/ https://lonmar.cn/2022/02/23/pwnabletw-calc
4.4k4 分钟

# pwn1 note1 # 1. 程序分析 64 位程序,发现保护全开了 ~~![](/2022picture/1.png)~~ # ida 查看一下: main: ~~![](/2022picture/2.png)~~ v3=1时: 这里发现对于输入的 tag 始终是在 先 创建的 0x20 的 chunk 中,而对于 name 的 chunk 是 tag 的下一个;并且这里发现 func1、2、3 没有任何区别 v3=2时: 看到这里对 name 、 tag 、 func 都可以重新编辑了 v3=3时:
1.3k1 分钟

# 1. 简介(在编译时进行设置): fority 是轻微的检测,用于检查缓冲区溢出的错误,在程序采用打量的字符串或者内存操作函数适用,例如:memcpy、memset、stpcpy、strcpy、strncpy、strncat、sprintf、snprintf、vsprintf、gets 以及宽字符的变体。 # 2. 作用: FORTIFY_SOURCE 是一个 C/C++ 编译器提供的安全保护机制,旨在防止缓冲区溢出和其他与字符串和内存操作相关的安全漏洞。它是在编译时自动 插入的一组额外代码 ,用于增强程序对于缓冲区溢出和其他常见安全问题的防护。 FORTIFY_SOURC
6.2k6 分钟

# 1.Large bin # 1. 在释放堆块时,想要进入 large bin 的堆块需要大于等于 512 (1024)字节【用户空间需要 大于等于 0x3F0,用户空间小于 0x3F0 进入 small bin 】 而 largebin 还要考虑 fd_nextsiez 和 bk_nextsize ,这两个是因为,在 largebin 中,会按着相同大小的 chunk 归到一起,不同 chunk 组直接的联系就需要 fd_nextsize 和 bk_nextsize 。这里除了每组的第一个 chunk ,其他的 fd_nextsize 和 bk_nextsize 都为 0 f
1.7k2 分钟

# 前言 ASLR 与 PIE 是不同的,两者不能认为是同一个机制,但是他们都是对地址进行 随机化 ,只不过作用的 对象 和作用 时期 不太一样 # 1.ASLR (操作系统的功能): ASLR 是 Linux操作系统 的功能选项,作用于程序 (ELF) 装入 内存 运行时。是一种针对缓冲区溢出的安全保护技术,通过对加载地址的随机化,防止攻击者直接定位攻击代码位置,到达阻止溢出攻击的一种技术。 # 打开 / 关闭 ASLR: # 查看 ASLR 打开情况: lsudo cat /proc/sys/kernel/randomize_va_sp
7.2k7 分钟

# 1. 程序分析 64 位程序,没有开启 pie # 利用 ida 进行分析 发现是一个流程 # 当 v3=1 时 此处先让我输入,然后根据输入的值开辟一个对应大小的堆 (&::s)[++dword_602100] = v2; 这里是存放chunk地址的数组; 这里是一个数组里面一个元素有八个字节,这里将我们开辟的堆的地址存放在这里 前面的::s这是因为ida在编译伪代码的时候出现了一些问题,这个s和其他变量名重复了 所以我们只需要选中`::`后面的s然后右键选择Rename global item更改一下变量名就可以了 printf(
7.3k7 分钟

libc 源码下载: http://ftp.gnu.org/gnu/glibc/ # 1.Unlink 这里参考了博客: https://hollk.blog.csdn.net/article/details/108481889?spm=1001.2014.3001.5502 unlink 是一个宏,定义在 malloc.c 里 c#define unlink(AV, P, BK, FD) {
5.3k5 分钟

# 1. 程序分析 32 位程序,开了 NX 伪源码: main cint __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int v3; // eax char buf[4]; // [esp+0h] [ebp-Ch] BYREF int *v5; // [esp+4h] [ebp-8h] v5 = &argc; setvbuf(stdout, 0, 2, 0); setvbuf(std
8.3k8 分钟

# 1. 漏洞原因 # ctfWiki 上的示例: c#include <stdio.h>#include <stdlib.h>typedef struct name &#123; char *myname; void (*func)(char *str);&#125; NAME;void myprint(char *str) &#123; printf("%s\n", str); &#125;void printmyname() &#123; printf("call print my name
1.5k1 分钟

# 1. 下载 DVRF 与安装 下载压缩包: https://github.com/praetorian-inc/DVRF 下载后解压: unzip DVRF-master.zip 安装 buildroot(2016.05 版本)【搭建交叉编译环境,这里我的 ubuntu 是 22.04】 hmkdir buildrootcd buildrootwget https://buildroot.org/downloads/buildroot-2016.05.tar.gzhttps://buildr