2023-10-132.4k字2 分钟柏鹭杯2023 pwn()# 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-calcmore...
2023-10-094.4k字4 分钟柏鹭杯2022 pwn()# 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时: more...
2023-10-071.3k字1 分钟FORTIFY_SOURCE(例题:CTFshow的pwn32)# 1. 简介(在编译时进行设置): fority 是轻微的检测,用于检查缓冲区溢出的错误,在程序采用打量的字符串或者内存操作函数适用,例如:memcpy、memset、stpcpy、strcpy、strncpy、strncat、sprintf、snprintf、vsprintf、gets 以及宽字符的变体。 # 2. 作用: FORTIFY_SOURCE 是一个 C/C++ 编译器提供的安全保护机制,旨在防止缓冲区溢出和其他与字符串和内存操作相关的安全漏洞。它是在编译时自动 插入的一组额外代码 ,用于增强程序对于缓冲区溢出和其他常见安全问题的防护。 FORTIFY_SOURCmore...
2023-10-056.2k字6 分钟large bin attack(为house利用系列打下基础)# 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 fmore...
2023-10-041.7k字2 分钟ASLR与PIE(例题:CTFshow的pwn31)# 前言 ASLR 与 PIE 是不同的,两者不能认为是同一个机制,但是他们都是对地址进行 随机化 ,只不过作用的 对象 和作用 时期 不太一样 # 1.ASLR (操作系统的功能): ASLR 是 Linux操作系统 的功能选项,作用于程序 (ELF) 装入 内存 运行时。是一种针对缓冲区溢出的安全保护技术,通过对加载地址的随机化,防止攻击者直接定位攻击代码位置,到达阻止溢出攻击的一种技术。 # 打开 / 关闭 ASLR: # 查看 ASLR 打开情况: lsudo cat /proc/sys/kernel/randomize_va_spmore...
2023-10-027.2k字7 分钟hitcon2014_stkof(unlink)# 1. 程序分析 64 位程序,没有开启 pie # 利用 ida 进行分析 发现是一个流程 # 当 v3=1 时 此处先让我输入,然后根据输入的值开辟一个对应大小的堆 (&::s)[++dword_602100] = v2; 这里是存放chunk地址的数组; 这里是一个数组里面一个元素有八个字节,这里将我们开辟的堆的地址存放在这里 前面的::s这是因为ida在编译伪代码的时候出现了一些问题,这个s和其他变量名重复了 所以我们只需要选中`::`后面的s然后右键选择Rename global item更改一下变量名就可以了 printf(more...
2023-10-027.3k字7 分钟堆利用之unlink(例题:hitcon2014_stkof)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) { more...
2023-10-015.3k字5 分钟hitcontraining_uaf(use after free)# 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(stdmore...
2023-10-018.3k字8 分钟堆利用之UAF(use after free)# 1. 漏洞原因 # ctfWiki 上的示例: c#include <stdio.h>#include <stdlib.h>typedef struct name { char *myname; void (*func)(char *str);} NAME;void myprint(char *str) { printf("%s\n", str); }void printmyname() { printf("call print my namemore...
2023-09-301.5k字1 分钟利用DVRF学习固件分析# 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://buildrmore...