Exploit-Exercises nebule 旅行日志(三)
继续探索之路,经过昨天的题目,忽然有那么点开窍了,今天继续:
看题目,还是用level对应的级别的帐号和密码登录,flag02的程序源码如图上所示,getegid 和 geteuid就不说了,这个程序首先的漏洞在于:
1、既然是flag02创建的,就不该让它有被别的用户执行的权限
2、又用了获取环境变量的函数getenv,上次level01中被我们利用了/uesr/bin/env来指定成执行我们自己写的程序,这个次应该也是不例外
既然用了USER这个环境变量,那么直接:USER=/bin/bash
但是执行后,显然是被echo直接把当成字符串输出了,这样不对啊,甚至都有点想直接去改echo了(被上次的思路影响),但是/bin下的echo可是root权限的,你可删除不了哦:
怎么办?我们的思路还是对的,应该还是在USER这个环境变量上下手,但是不能执行成命令啊!被echo。。。等等,命令行下:echo ;test
会显示成,哈哈,那么方法就来了:
你甚至可以USER=';getflag;',这个程序的owner是flag02,这个也可以getflag,上面是用了USER=';/bin/sh;'的方法,下面是运行结果
运行环境变量和命令行下的命令是;是分割符,这个是要转过来的地方