SSP Leak < libc2.27什么是 SSP 漏洞?_**Stack Smashing Protector (SSP) **_是一个著名的缓冲区溢出漏洞缓解措施。当一个函数检测栈上的 Canary 被破坏的时候,就会转到 __stack_chk_fial()函数终止程序运行并抛出错误信息。改错误信息包含了 argv[0] 指向的字符串,如果我们能够控制 argv[0],那么将可能造成信息泄露,这一技术称之为 SSP Leak。 先举个简单的例子: 默认情况下 argv[0] 是指向程序路径及名称的指针,当检查到栈溢出时,在标准错误中打印出了这个字符串: 123456789#inc
什么是Fork在计算机编程(尤其是 Linux/Unix 系统)中,fork() 是一个极其特殊且核心的系统调用。它的字面意思是“分叉”,功能是让一个正在运行的程序(父进程)在原地克隆出一个完全一样的副本(子进程)。 通俗点说,fork() 就像是细胞分裂,或者孙悟空拔下一根毫毛变出了一个一模一样的自己。 1. 核心特点:一次调用,两次返回这是 fork() 最神奇的地方。普通的函数调用一次只返回一个值,但 fork() 调用后,代码会从同一个点继续向下执行,但在父进程和子进程中返回的值不同: 在父进程中:返回子进程的 PID(进程 ID,一个大于 0 的整数)。这让父进程知道自己
[SWPUCTF 2024 秋季新生赛]不可名状的东西栈迁移 + ret2libc + ORW 注意 read 读取到缓冲区的地址 buf,在 rbp-0x80 处,记好,有大用处。 12345678-0000000000000080 // Use data definition commands to manipulate stack variables and arguments.-0000000000000080 // Frame size: 80; Saved regs: 8; Purge: 0-0000000000000080-0000000000000080 _BYTE
pwnable.tw orw 例题这里用 pwnable.tw 网站上的 orw 例题来讲解 orw 的用法:这里给出 flag 在/home/orw/flag 文件下 三连获取基本信息:32 位开启 canary,程序基本流程是输入字符串。看一下 IDA 的情况: 找到 main 函数,发现一开始执行了 orw_seccomp() 函数,是 orw 题目,查一下系统调用: 目前发现我们可以利用的有 open,read,write ,这三个系统调用已经足够我们获取 flag 了。 这里 read 就是一个非常浅显的栈溢出漏洞,直接往里面填写东西就可以了。由于
SeccompOrw 读写权限漏洞利用参考资料: https://blog.csdn.net/weixin_59166557/article/details/143275417 https://www.codeleading.com/article/29984574279/ 对于 ORW 的简述:ORW(Open,Read,Write)是一种常见的利用技术,通常用于在攻破某个系统后读取文件,例如读出 flag 文件的系统操作。该技术主要通过以下三个系统调用来实现: open:打开文件 sys_open(const char __user *filename,
一些常用函数的调用总结Read 函数read 函数:ssize_t read(int fd, void *buf, size_t count)。 read(0, …):从“标准输入”读取 (STDIN) 0 是 Standard Input (标准输入) 的宏定义(在 C 语言里叫 STDIN_FILENO)。 调用 read(0, buffer, size) 时,程序会暂停运行,等待用户在键盘上敲击字符并按下回车键。它和 C 语言里的 scanf 或者 getchar 底层是同一个数据来源。 read(fd, …):从“自定义文件/设备”读取 这里的 fd 是一个变量。当你使用
[SWPUCTF 2024 秋季新生赛]出题人你到底干了什么? main 函数123456789101112int __fastcall main(int argc, const char **argv, const char **envp){ size_t n; // rax _BYTE buf[88]; // [rsp+0h] [rbp-60h] BYREF char *s; // [rsp+58h] [rbp-8h] s = s_; n = strlen(s_); write(1, s_, n); read(0, buf, 0x200u); return 0;&
ret2csu csu 链利用我们直接结合 BUUCTF 的一道题来了解 ret2csu 的利用方式 BUUCTF jarvisoj_level3_x64 什么是 ret2csu?ret2csu 是 64 位 ROP 中针对缺少高寄存器 Gadget(如pop rdx/pop r12)的通用解决方案利用程序 .init_array段的**CSU 通用初始化代码**,间接给rdx/r12-r15等寄存器赋值,实现多参数函数调用。 ret2csu 的利用原理首先再次介绍一下 64 位程序的传参方式:当参数少于 7 个时,参数从左到右依次放入寄存器:rdi,rsi,rdx,r
[HDCTF 2023]Makewish栈迁移+Canary+随机数+栈随机循环 一道开启了 Canary 的 64 位栈题,先搜集信息: 123456789101112131415161718192021int __fastcall main(int argc, const char **argv, const char **envp){ int buf_; // [rsp+8h] [rbp-38h] BYREF int buf__1; // [rsp+Ch] [rbp-34h] char buf[40]; // [rsp+10h] [rbp-30h] BYRE
栈迁移利用方法分析参考资料:https://hetian.blog.csdn.net/article/details/106561835 1)[Black Watch 入群题]PWN 1234567891011121314ssize_t vul_function(){ size_t _Hello_good_Ctfer__nWhat_is_your_name?_; // eax size_t _What_do_you_want_to_say?_; // eax _BYTE buf[24]; // [esp+0h] [ebp-18h] BYREF _Hello_g