摘要: 格式化字符串介绍 格式化字符串介绍 格式化字符串(format string),是一些程序设计语言在格式化输出API函数中用于指定输出参数的格式与相应位置的字符串参数,例如C、C++等程序设计语言的print类函数,其中的转换说明(conversion specification)用于把随后对应的0个或多个函数参数转 阅读全文
posted @ 2022-01-17 22:41 vi0let 阅读(1099) 评论(0) 推荐(0) 编辑
摘要: 栈溢出进阶(下) stack pivot 原理 leave -> mov rsp,rbp pop rbp ret ret 优点 :所需溢出字节较少 条件 :栈溢出控制程序执行流;存在可以控制内容的内存(栈、堆、bss...),且需泄露地址。 SROP SROP全称是Sigreturn Oriented Program 阅读全文
posted @ 2022-01-17 22:39 vi0let 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 栈溢出进阶(上) stack smash 原理:在程序加了 canary 保护之后,如果我们读取的 buffer 覆盖了对应的值时,程序就会报错,而一般来说我们并不会关心报错信息。而 stack smash 技巧则就是利用打印这一信息的程序来得到我们想要的内容。这是因为在程序启动 canary 保护之后,如果发现 c 阅读全文
posted @ 2022-01-17 22:34 vi0let 阅读(63) 评论(0) 推荐(0) 编辑
摘要: ret2xx ROP 随着NX保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。所以攻击者们也提出来相应的方法来绕过保护,目前主要是ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段(gadgets)来改变某些寄存器或者变 阅读全文
posted @ 2022-01-17 22:33 vi0let 阅读(73) 评论(0) 推荐(0) 编辑
摘要: canary_pie绕过 canary机制介绍 canary是一种用来防护栈溢出的保护机制。其原理是在一个函数的入口处,先从fs/gs寄存器中取 出一个4字节(eax)或者8字节(rax)的值存到栈上,当函数结束时会检查这个栈上的值是否和存进去 的值一致 当canary被纂改时,触发__Stack_chk_fail。 can 阅读全文
posted @ 2022-01-17 22:32 vi0let 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 栈溢出 栈溢出 C语言函数调用栈 • 函数调用栈是指程序运行时内存一段连续的区域 • 用来保存函数运行时的状态信息,包括函数参数与局部变量等 • 称之为“栈”是因为发生函数调用时,调用函数(caller)的状态被保存在栈内,被调用函数(callee)的状态被压入调用栈的栈顶 • 在函数调用结束时,栈顶的函数 阅读全文
posted @ 2022-01-17 22:30 vi0let 阅读(63) 评论(0) 推荐(0) 编辑
摘要: shellcode shellcode|概述 shellcode通常是软件漏洞利用过程中使用一小段机器代码 作用: 1、启动shellcode,进行交互 2、打开服务器端口等待连接 3、反向连接端口 4、。。。 shellcode编写 编写时面临的问题 下面是一个简短的shell程序: #include"stdlib. 阅读全文
posted @ 2022-01-17 22:24 vi0let 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 装载与汇编 程序的装载与进程的执行 静态链接的程序的执行过程 动态链接的程序的执行过程 x86&amd64汇编简述 常用汇编指令: mov lea add/sub push/pop cmp jmp j[condition] call/ret leave ... mov指令:赋值 lea指令:取址 push指令: 阅读全文
posted @ 2022-01-17 22:23 vi0let 阅读(17) 评论(0) 推荐(0) 编辑
摘要: CPU与进程的执行 程序的编译与链接 小端序 低地址存放数据低位、高地址存放数据高位 我们所主要关注的格式 大端序 低地址存放数据高位、高地址存放数据低位 程序的装载与进程的执行 amd64寄存器结构 rax:8Bytes eax:4Bytes ax:2Bytes ah:1Bytes al:1Bytes 部分寄存器功能 阅读全文
posted @ 2022-01-17 22:21 vi0let 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 程序装载与虚拟内存 Linux下可执行文件格式ELF 磁盘中的ELF(可执行文件)与内存中的ELF(进程内存映像) ELF文件到虚拟地址空间的映射 进程虚拟地址空间 地址以字节编码 虚拟内存用户空间每个进程一份 1Byte=8bits 常以16进制表示 虚拟内存内核空间所有进程共享一份 0x3c = 0011 1100 阅读全文
posted @ 2022-01-17 22:18 vi0let 阅读(50) 评论(0) 推荐(0) 编辑
摘要: ELF文件概述 概述 ·破解、利用成功(程序的二进制漏洞) ·攻破(设备、服务器) ·控制(设备、服务器) ·exploit ·用于攻击的脚本与方案 ·payload ·攻击载荷,是对目标进程被劫持控制流的数据 ·shellcode ·调用攻击目标的shell的代码 二进制基础 程序的编译与链接 从c源码到可执行文 阅读全文
posted @ 2022-01-17 22:13 vi0let 阅读(76) 评论(0) 推荐(0) 编辑