题目要求
靶机配置了ssh,可以账号test、密码123通过ssh登录到靶机进行攻击。(靶机IP地址见题目中网络拓扑图)。
靶机root文件夹下配置了getflag程序,用以获取flag,普通用户无权访问。
靶机用户文件夹下配置了具有root权限的可执行文件anyexe,它存在着可以利用并用来执行任意文件的漏洞。
请分析anyexe.c,利用其获取flag。
提示:危险函数system;环境变量USER
探索与思考
进入靶机后,看到两个文件:
运行exp,并查看exp.c
查询资料后获知,USER是一种环境变量,getenv()就是显示读取当前环境变量。如果当前USER的值是test,那么便会输出test is cool.
更改USER环境变量的值,规律一样。
既然做过环境变量漏洞提权和Path2实验,我想本次实验也是举一反三便可以。
于是向环境变量USER中添加/bin/bash
咦?为啥没用?
肯定是哪里出错了。
又是一段时间的查询资料后,发现/bin/bash是要程序运行的而不是打印的,那么就得有东西被打印出来,并且在/bin/bash运行以后,后面的“is”还是要被当成打印的文字,而不是运行的命令。
实验步骤
1.在USER环境变量中添加“;/bin/bash;#”
再次运行exp
whoami发现我已经是root啦!
2.运行/root下的getflag,得到flag!