首先看源码:
先看一下flag04目录下各个文件的权限:、
可以看到token所有者为flag04所属组也是flag04,其他人不可读写,所基本上无法从token入手,只好从flag04程序入手。通过flag04diamante基本可判断这段代码出问题的地方是18行和23行,第23行读取输入的文件的路径,18行判断路径是否有token,如果有就返回not access
绕过思路:
虽然我们没有办法改变token文件名但是我们可以创建一个链接指向token,然后读取这个链接文件,从而达到绕过。
对于linux硬链接和软链接可以查看此篇文章:
http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/
在tmp下创建token文件的硬链接(为什么是tmp,因为tmp目录下对level04用户是可写的)
最后读出密码,执行getflag