pwnable.krcmd1

Posted p4nda

tags:

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

 

最近的pwnable都是linux操作系统层面的。

ssh cmd1@pwnable.kr -p2222 (pw:guest)

首先还是下载源代码:

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

int filter(char* cmd){
    int r=0;
    r += strstr(cmd, "flag")!=0;
    r += strstr(cmd, "sh")!=0;
    r += strstr(cmd, "tmp")!=0;
    return r;
}
int main(int argc, char* argv[], char** envp){
    putenv("PATH=/fuckyouverymuch");
    if(filter(argv[1])) return 0;
    system( argv[1] );
    return 0;
}

其中有一句putenv,其实我现在也没明白有什么用,不过有一个提示,有一个新的文件夹/tmp/fuckuverymuch/。

还是可以看见有很多东西的。

现在根据源代码可以分析出的是,程序调用system()函数执行用户输入的参数命令,但其中不能包括“flag”、“sh”、“tmp”字样。

就是说把这三个东西藏起来就好。

其实,system命令的默认PWD环境变量应该是与这个程序的PWD环境变量相同,这个环境变量是什么,就是默认“./”执行的文件夹目录,一般是根据程序调用的bash窗口目录来的。

我们可以通过写一个bash脚本,通过system执行这个脚本来运行。

比如我在/tmp文件夹下写了一个叫p4nda的脚本,内容是

cat /home/cmd1/flag

然后我选择在bash进入/tmp目录下后,执行/home/cmd1/cmd1程序,这样程序的PWD环境变量就是/tmp,这样system的PWD环境变量也是/tmp

在执行system(\'./p4nda\')就可以了。

还需要执行一条chmod 777 ./p4nda

操作流程如下

进入/tmp目录:cd /tmp

然后写文件:vi p4nda

 

然后修改可执行权限 chmod 777 ./p4nda

 最后,执行 /home/cmd1/cmd1 "./p4nda"

 

 

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

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数