pwnable.kr cmd2
2026/7/28 14:02:17 网站建设 项目流程


还是先连接上去看看有什么,密码是上一题的flag

cat一下或者IDA

#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是一样的,但是过滤条件更加严格了连/也不能使用
我自己不是太熟悉,所以参考了网上的很多方法,下面我就说一下网上最常见的方法:使用通配符
首先是理解system()指令搜索命令的执行方式
http://man7.org/linux/man-pages/man3/system.3.html从这里可以看出来execl("/bin/sh", "sh", "-c", command, (char *) 0);此命令用于sh以此特定方式执行命.
而这里https://www.freebsd.org/cgi/man.cgi?query=sh&sektion=&n=1说明了command [-p] [utility [argument ...]]-p选项的命令允许我们使用默认值PATH进行搜索。它保证找到所有标准实用程序。
system本质是调用execve /bin/sh 来执行命令的。所以要想方法借助sh的特性来出现/。
输入./cmd2 "command -p cat f*"获得flag

下面内容参考至:https://blog.csdn.net/think_ycx/article/details/82991032这里还列出了很多不同的思路大家可以去看看

补充:system调用sh执行命令源码

下载glibc后,开始调试system源码。

# 编译 gcc system.c -g -o system # 调试 gdb system # 加载源码 gdb> directory /root/Pwn/glibc/glibc-2.23/sysdeps/posix/

system调用链:__libc_system->do_system->__execve (SHELL_PATH, (char *const *) new_argv, __environ) 。SHELL_PATH是/bin/sh。

do_system 部分源码:

// ... 处理一些信号 if (pid == (pid_t) 0) { /* Child side. */ const char *new_argv[4]; new_argv[0] = SHELL_NAME; new_argv[1] = "-c"; new_argv[2] = line; new_argv[3] = NULL; /* Restore the signals. */ (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL); (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL); (void) __sigprocmask (SIG_SETMASK, &omask, (sigset_t *) NULL); INIT_LOCK (); /* Exec the shell. */ (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ); _exit (127); }

详细参考:关于glibc的system函数调用实现https://blog.csdn.net/u010039418/article/details/77017689

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询