当前位置:网站首页 > 黑客培训 > 正文

CTF PWN练习之环境变量继承

freebuffreebuf 2021-03-18 262 0

本文来源:蚁景科技

今天的实验和上次学习的精确覆盖变量数据有关,CTF PWN练习中的环境变量继承。这个题目有联系到环境变量参数,我们需要知道在Linux/Windows操作系统中, 每个进程都有其各自的环境变量设置。缺省情况下, 当一个进程被创建时,除了创建过程中的明确更改外,它继承了其父进程的绝大部分环境变量信息。

C语言main函数可以传递三个参数,除了argc和argv参数外,还能接受一个char**类型的envp参数。envp指向一个字符串数组,该数组存储了当前进程具体的环境变量的内容,envp的最后一个元素指向NULL,此为envp结束的标识符。

实验介绍开始

打印环境变量参数信息的示例代码(位于/home/test/3目录下的env.c):

#include stdio.h>

int main(int argc, char** argv, char** envp)

{

int i = 0;

while (envp[i])

{

printf("envp[%2d] = %s\n", i, envp[i]);

i += 1;

}

return 0;

}

编译这段代码生成env程序,然后在命令行下执行,可以看到程序打印出了具体的环境变量参数信息:

图片1.png

环境变量的格式为:环境变量名=环境变量值

当父进程启动一个子进程时,子进程会继承父进程的换了变量信息。在Linux Shell下,通过export可以给Shell添加一个环境变量,此后通过Shell启动的子进程都会拥有这个环境变量。

在Shell中执行export testenv="Hello_World"之后,再执行./env,可以看到新的环境变量已经被子进程继承了。

图片2.png

除了通过export添加环境变量以外,我们还可以通过函数getenv、putenv、setenv等对环境变量进行操作。

看完基础知识之后,我们开始来做题,本文实验题目:

转载请注明来自网盾网络安全培训,本文标题:《CTF PWN练习之环境变量继承》

标签:CTF

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表