首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
我的pwn笔记
】的更多相关文章
我的pwn笔记
0.64位程序参数一次保存在RDI,RSI,RDX,RCX,R8和 R9,具体见图 windows64位调用约定 1.<_libc_csu_init>有一些万能gadget,汇编如下 #!bash 00000000004005a0 <__libc_csu_init>: 4005a0: 6c d8 mov %rbp,-0x28(%rsp) 4005a5: 4c e0 mov %r12,-0x20(%rsp) 4005aa: 8d 2d lea 0x200873(%rip),%rbp…
pwn易忘操作原理笔记
堆溢出漏洞: 一.null-byte-off-by-one 漏洞原理:由于输入操作失误,导致可以把size最低字节修改为\x00,overlapchunk利用. 构造 1.freeB,此时C的presize被修改为B的大小 2.通过A的null-byte-off-by-one漏洞修改B的size大小,malloc b1,b2两个块,此时由于通过B的size去找下一个堆块的presize位置来修改,B的size被改动后,C的presize无法得到更新仍然是B的原来大小. 3.free b1,fre…
pwn学习日记Day22 《程序员的自我修养》读书笔记
知识杂项 软连接 命令: ln -s 原文件 目标文件 特征: 1.相当于windows的快捷方式 2.只是一个符号连接,所以软连接文件大小都很小 3.当运行软连接的时候,会根据连接指向找到真正的文件,然后执行 4.所有软连接文件的权限是777,而真正的权限是由指向的那个文件决定的 5.原文件丢失,软连接无法访问,会报找不到的错误 6.ls -al以后,软连接后面箭头指向的是原文件 硬连接 命令: ln 原文件 目标文件 特征: 1.原文件和连接文件的属性完全一样 2.连接文件和原文件的关系类似…
pwn学习日记Day21 《程序员的自我修养》读书笔记
Linux内核装载ELF过程 (1)bash进程调用fork()系统调用创建一个新的进程 (2)新的进程调用execve()系统调用执行指定的ELF文件,原先的bash进程继续返回等待刚才启动的新进程结束,然后继续等待用户输入命令. (3)execve()系统调用相应的入口是sys_execve(),sys_execve()进行一些参数的检查复制后,调用do_execve(). (4)do_execve()读取128个字节的文件头部,调用search_binary_handle(). (5)se…
pwn学习日记Day20 《程序员的自我修养》读书笔记
可执行文件的装载与进程 覆盖装入和页映射是两种典型的动态装载方法 进程建立的三步 1.创建一个独立的虚拟地址空间 2.读取可执行文件头,并且建立虚拟空间与可执行文件的映射关系. 3.将CPU的指令寄存器设置成可执行文件的入口地址,启动运行. 常见段权限组合: 以代码段为代表的权限为可读可执行段 以数据段和BSS段为代表的权限为可读可写段 以只读数据段为段表的权限为只读的段 操作系统通过给进程空间划分出一个个VMA来管理进程的虚拟空间: 基本原则就是将相同权限属性的.有相同映像文件的映射成一个VM…
pwn学习日记Day19 《程序员的自我修养》读书笔记
windows PE/COFF章总结 本章学习了windows下的可执行文件和目标文件格式PE/COFF.PE/COFF文件与ELF文件非常相似,它们都是基于段的结构的二进制文件格式.Windows下最常见的目标文件格式就是COFF文件格式,微软的编译器产生的目标文件都是这种格式.COFF文件有一个很有意思的段叫".drectve段",这个段中保存的是编译器传递给链接器的命令行参数,可以通过这个段实现指定运行库等功能.Windows下的可执行文件.动态链接库等都使用PE文件格式,PE文…
pwn学习日记Day18 《程序员的自我修养》读书笔记
知识杂项 obj文件:当前源代码编译成二进制目标文件 exe文件:将.obj文件与库文件.lib等文件链接生成的可执行文件 一个现代编译器的主要工作流程如下: 源程序(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标程序(object code)→ 连接器(链接器,Linker)→ 可执行程序(executables) 映像:因为PE文件在装载时被直接映射到进程的虚拟空间运行.它是进程虚拟空间的映像.所以PE…
pwn学习日记Day17 《程序员的自我修养》读书笔记
静态链接章小结 本章首先学习了静态链接的第一步骤,即目标文件在被链接成最终可执行文件时,输入目标文件中的各段是如何被合并到输出文件中的,链接器如何为它们分配在输出文件中的空间和地址.一旦输入段中的最终地址被确定,接下来就可以进行符号解析与重定位,链接器会把各个输入目标文件中对外部符号的引用进行解析,把每个段中须重定位的指令和数据进行"修补",使它们都指向正确的位置. 本章还对几个静态链接中的问题进行了分析,比如为什么未初始化的全局/静态变量要使用COMMON块,C++会对链接器和目标文…
pwn学习日记Day15 《程序员的自我修养》读书笔记
程序编译链接过程: 1.调用cc1程序,这个程序实际上就是GCC的C语言编译器,它将"hello.c"编译成一个临时的汇编文件"/tmp/ccUhtGSB.s". 2.调用as程序,as程序是GNU的汇编器,它将"/tmp/ccUhtGSB.s"汇编成临时文件"/tmp/ccQZRPL5.o",这个"/tmp/ccQZRPL5.o"实际上就是前面的"hello.o". 3.GCC调用co…
pwn学习日记Day14 《程序员的自我修养》读书笔记
目标文件:计算机科学中存放目标代码的计算机文件,包含着机器代码,代码在运行时使用的数据,调试信息等,是从源代码文件产生程序文件这一过程的中间产物. 目标代码(objectcode)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成.目标文件(objectfile)即存放目标代码的计算机文件,它常被称作二进制文件(binaries). 目标文件包含着机器代码(可直接被计算机中央处理器执行)以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序…