Pwn_相关黑话/技术名词解释(动态更新)
Pwn知识性名词
Linux相关
延迟绑定技术
ELF采用了当函数第一次使用时,才进行绑定。
ELF实现延迟绑定是通过Plt,原先GOT中存放着全局变量和函数调用,现在把它拆分为各个部分。 .got 和.got.plt,用.got存放着全局变量的引用,用.got.plt存放函数的引用。
基本可以解释为,只有在某个函数得到运行时,对应的plt got数据才正确绑定。
动态链接
程序装载时通过 动态链接器 将所需的所有 动态链接库 装载入进程空间中(程序按模块拆分成功各个相对独立的部分),当程序运行时才将他们链接在一起形成一个完整的程序过程。
相对于静态链接,静态链接会浪费更多内存和磁盘的空间,。在不同模块的情况下,静态链接一旦某一模块发生改变就会导致整个软件需要重新编译。动态链接推迟了这个链接过程到了程序运行时才进行。
Linux系统中,ELF动态链接文件被称为动态共享对象,简称共享对象。一般是以“.so”为扩展名的文件;windows中.dll
Libc
Linux下的函数库
Plt表与GOT表
若可执行文件中调用多个动态库函数,那每个函数都需要这两样东西。这样每样东西就形成一个表,每个函数使用的一项。
PLT:内部函数表,程序链接表
GOT:全局偏移表,全局函数表
Got表避免了不能节省空间的情况。
Pwn/CTF黑话
exp
指漏洞利用的脚本,通常以python编写
shellcode
指能打开shell的一段代码,通常用汇编编写。
payload
有效载荷。漏洞利用过程中需要构造的攻击代码,shellcode属于payload的一种/一部分。