摘要:
综述 通过格式化字符串漏洞可以进行任意内存的读写。由于函数参数通过栈进行传递,因此使用%X$p(X为任意正整数)可以泄露栈上的数据。并且,在能对栈上数据进行控制的情况下,可以事先将想泄露的地址写在栈上,再使用%X$p,就可以以字符串格式输出想泄露的地址。 除此之外,由于"%n"可以将已经成功输出的字 阅读全文
综述 通过格式化字符串漏洞可以进行任意内存的读写。由于函数参数通过栈进行传递,因此使用%X$p(X为任意正整数)可以泄露栈上的数据。并且,在能对栈上数据进行控制的情况下,可以事先将想泄露的地址写在栈上,再使用%X$p,就可以以字符串格式输出想泄露的地址。 除此之外,由于"%n"可以将已经成功输出的字 阅读全文
posted @ 2022-03-07 21:35
vi0let
阅读(540)
评论(0)
推荐(0)

格式化字符串介绍 格式化字符串(format string),是一些程序设计语言在格式化输出API函数中用于指定输出参数的格式与相应位置的字符串参数,例如C、C++等程序设计语言的print类函数,其中的转换说明(conversion specification)用于把随后对应的0个或多个函数参数转
stack pivot 原理 leave -> mov rsp,rbp pop rbp ret ret 优点 :所需溢出字节较少 条件 :栈溢出控制程序执行流;存在可以控制内容的内存(栈、堆、bss...),且需泄露地址。 SROP SROP全称是Sigreturn Oriented Program
stack smash 原理:在程序加了 canary 保护之后,如果我们读取的 buffer 覆盖了对应的值时,程序就会报错,而一般来说我们并不会关心报错信息。而 stack smash 技巧则就是利用打印这一信息的程序来得到我们想要的内容。这是因为在程序启动 canary 保护之后,如果发现 c
ROP 随着NX保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。所以攻击者们也提出来相应的方法来绕过保护,目前主要是ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段(gadgets)来改变某些寄存器或者变
canary机制介绍 canary是一种用来防护栈溢出的保护机制。其原理是在一个函数的入口处,先从fs/gs寄存器中取 出一个4字节(eax)或者8字节(rax)的值存到栈上,当函数结束时会检查这个栈上的值是否和存进去 的值一致 当canary被纂改时,触发__Stack_chk_fail。 can
栈溢出 C语言函数调用栈 • 函数调用栈是指程序运行时内存一段连续的区域 • 用来保存函数运行时的状态信息,包括函数参数与局部变量等 • 称之为“栈”是因为发生函数调用时,调用函数(caller)的状态被保存在栈内,被调用函数(callee)的状态被压入调用栈的栈顶 • 在函数调用结束时,栈顶的函数
shellcode|概述 shellcode通常是软件漏洞利用过程中使用一小段机器代码 作用: 1、启动shellcode,进行交互 2、打开服务器端口等待连接 3、反向连接端口 4、。。。 shellcode编写 编写时面临的问题 下面是一个简短的shell程序: #include"stdlib.
程序的装载与进程的执行 静态链接的程序的执行过程 动态链接的程序的执行过程 x86&amd64汇编简述 常用汇编指令: mov lea add/sub push/pop cmp jmp j[condition] call/ret leave ... mov指令:赋值 lea指令:取址 push指令:
程序的编译与链接 小端序 低地址存放数据低位、高地址存放数据高位 我们所主要关注的格式 大端序 低地址存放数据高位、高地址存放数据低位 程序的装载与进程的执行 amd64寄存器结构 rax:8Bytes eax:4Bytes ax:2Bytes ah:1Bytes al:1Bytes 部分寄存器功能
浙公网安备 33010602011771号