zoukankan      html  css  js  c++  java
  • 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
    ", argv[1]);
        system( argv[1] );
        return 0;
    }

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

    由于/也被过滤

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

    补充:

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

  • 相关阅读:
    UVa 107 The Cat in the Hat
    UVa 591 Box of Bricks
    UVa 253 Cube painting
    UVa 10161 Ant on a Chessboard
    UVa 401 Palindromes
    UVa 465 Overflow
    我不知道
    消防局的设立
    某CF的D
    保安站岗
  • 原文地址:https://www.cnblogs.com/liuyimin/p/7338500.html
Copyright © 2011-2022 走看看