pwnable.kr cmd2之write up

Posted liuyimin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pwnable.kr cmd2之write up相关的知识,希望对你有一定的参考价值。

来看一下源代码:

#include <stdio.h>
#include <string.h>

int filter(char* cmd){
    int r=0;
    r += strstr(cmd, "=")!=0;
    r += strstr(cmd, "PATH")!=0;
    r += strstr(cmd, "export")!=0;
    r += strstr(cmd, "/")!=0;
    r += strstr(cmd, "`")!=0;
    r += strstr(cmd, "flag")!=0;
    return r;
}

extern char** environ;
void delete_env(){
    char** p;
    for(p=environ; *p; p++)    memset(*p, 0, strlen(*p));
}

int main(int argc, char* argv[], char** envp){
    delete_env();
    putenv("PATH=/no_command_execution_until_you_become_a_hacker");
    if(filter(argv[1])) return 0;
    printf("%s\\n", argv[1]);
    system( argv[1] );
    return 0;
}

此题与cmd1思路一致,只是过滤了更多字符,

由于/也被过滤

但是在类Unix系统和其他一些操作系统中,pwd(英语:print working directory)用于输出当前工作目录的绝对路径,所以在输入命令时要切换到根目录下

补充:

/表示根目录:在计算机的文件系统中,根目录指文件系统的最上一级目录,它是相对子目录来说的;它如同一棵大树的“根”一般,所有的树杈以它为起点,故被命名为根目录。以微软公司开发的Windows操作系统为例:打开这台电脑(我的电脑、计算机),双击C盘就进入C盘的根目录。双击D盘就进入D盘的根目录。
Pwd表示全局变量,表示当前目录:

 

以上是关于pwnable.kr cmd2之write up的主要内容,如果未能解决你的问题,请参考以下文章

pwnable.kr 之 passcode write up

pwnable.kr lotto之write up

pwnable.kr bof之write up

pwnable.kr cmd1之write up

pwnable.kr login之write up

pwnable.kr之flag