01 2022 档案

摘要:格式化字符串介绍格式化字符串介绍 格式化字符串(format string),是一些程序设计语言在格式化输出API函数中用于指定输出参数的格式与相应位置的字符串参数,例如C、C++等程序设计语言的print类函数,其中的转换说明(conversion specification)用于把随后对应的0个或多个函数参数转 阅读全文
posted @ 2022-01-17 22:41 vi0let 阅读(1157) 评论(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 阅读(43) 评论(0) 推荐(0)
摘要:栈溢出进阶(上)stack smash 原理:在程序加了 canary 保护之后,如果我们读取的 buffer 覆盖了对应的值时,程序就会报错,而一般来说我们并不会关心报错信息。而 stack smash 技巧则就是利用打印这一信息的程序来得到我们想要的内容。这是因为在程序启动 canary 保护之后,如果发现 c 阅读全文
posted @ 2022-01-17 22:34 vi0let 阅读(86) 评论(0) 推荐(0)
摘要:ret2xxROP 随着NX保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。所以攻击者们也提出来相应的方法来绕过保护,目前主要是ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段(gadgets)来改变某些寄存器或者变 阅读全文
posted @ 2022-01-17 22:33 vi0let 阅读(108) 评论(0) 推荐(0)
摘要:canary_pie绕过canary机制介绍 canary是一种用来防护栈溢出的保护机制。其原理是在一个函数的入口处,先从fs/gs寄存器中取 出一个4字节(eax)或者8字节(rax)的值存到栈上,当函数结束时会检查这个栈上的值是否和存进去 的值一致 当canary被纂改时,触发__Stack_chk_fail。 can 阅读全文
posted @ 2022-01-17 22:32 vi0let 阅读(478) 评论(0) 推荐(0)
摘要:栈溢出栈溢出 C语言函数调用栈 • 函数调用栈是指程序运行时内存一段连续的区域 • 用来保存函数运行时的状态信息,包括函数参数与局部变量等 • 称之为“栈”是因为发生函数调用时,调用函数(caller)的状态被保存在栈内,被调用函数(callee)的状态被压入调用栈的栈顶 • 在函数调用结束时,栈顶的函数 阅读全文
posted @ 2022-01-17 22:30 vi0let 阅读(93) 评论(0) 推荐(0)
摘要:shellcodeshellcode|概述 shellcode通常是软件漏洞利用过程中使用一小段机器代码 作用: 1、启动shellcode,进行交互 2、打开服务器端口等待连接 3、反向连接端口 4、。。。 shellcode编写 编写时面临的问题 下面是一个简短的shell程序: #include"stdlib. 阅读全文
posted @ 2022-01-17 22:24 vi0let 阅读(238) 评论(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 阅读(44) 评论(0) 推荐(0)
摘要:CPU与进程的执行程序的编译与链接 小端序 低地址存放数据低位、高地址存放数据高位 我们所主要关注的格式 大端序 低地址存放数据高位、高地址存放数据低位 程序的装载与进程的执行 amd64寄存器结构 rax:8Bytes eax:4Bytes ax:2Bytes ah:1Bytes al:1Bytes 部分寄存器功能 阅读全文
posted @ 2022-01-17 22:21 vi0let 阅读(41) 评论(0) 推荐(0)
摘要:程序装载与虚拟内存Linux下可执行文件格式ELF 磁盘中的ELF(可执行文件)与内存中的ELF(进程内存映像) ELF文件到虚拟地址空间的映射 进程虚拟地址空间 地址以字节编码 虚拟内存用户空间每个进程一份 1Byte=8bits 常以16进制表示 虚拟内存内核空间所有进程共享一份 0x3c = 0011 1100 阅读全文
posted @ 2022-01-17 22:18 vi0let 阅读(66) 评论(0) 推荐(0)
摘要:ELF文件概述概述 ·破解、利用成功(程序的二进制漏洞) ·攻破(设备、服务器) ·控制(设备、服务器) ·exploit ·用于攻击的脚本与方案 ·payload ·攻击载荷,是对目标进程被劫持控制流的数据 ·shellcode ·调用攻击目标的shell的代码 二进制基础 程序的编译与链接 从c源码到可执行文 阅读全文
posted @ 2022-01-17 22:13 vi0let 阅读(93) 评论(0) 推荐(0)
摘要:pwn环境配置IDA Pro 静态分析工具 下载链接:https://down.52pojie.cn/ pwntools 本质是python的一个库 如果没有pip3,先安装一下。 安装方法: sudo pip3 install pwntools -i https://pypi.tuna.tsinghua.edu 阅读全文
posted @ 2022-01-16 11:39 vi0let 阅读(58) 评论(0) 推荐(0)