Exploit-Exercises--00&01笔记
决定和你们分享一下,这个东西真的好玩 !刺激!!给力!!!
https://exploit-exercises.com/
exploit-exercises.com提供了各种虚拟机,文档和挑战,可用于了解各种计算机安全问题,例如特权升级,漏洞分析,漏洞开发,调试,逆向工程和一般网络安全问题。
那么我们就现在来一盘紧张又刺激的漏洞利用练习吧
1.下载Nebula
点击下载 => https://drive.google.com/drive/folders/0B9RbZkKdRR8qLWZBcVBvanlLb1U
- 登录使用。下载完以后呢和我使用的界面是一样的
3. level00
关于
此级别要求您找到将作为“flag00”帐户运行的设置用户ID程序。您还可以通过仔细查看/可疑目录中的顶级目录来找到此信息。
要访问此级别,请使用level00的密码登录为level00。
进来以后我们看到用户id是level00
那么我找了找在home目录中发现有很多文件夹 分别查看了使用权限。可以看到level00和flag00 这两个文件夹只有属于level00这个用户级别的 。其他的文件夹属于其他的用户的级别。
其实到了这里,个人的思路也就断了 ,不得已从网上找了一份答案 做了一个参考
这位作者呢通过用户名和用户组去搜索命令,于是跟着他的思路走着,找到了第一条flag
越权成功
http://www.cnblogs.com/zealoct/p/3511762.html
4. level01
在下面的程序中有一个漏洞,允许任意程序被执行,你能找到吗?
无奈我还是做了弊,看了视频才知道是怎么回事!
https://www.youtube.com/watch?v=-mtOlyxyJx4
要做这个级别,请使用密码level01作为level01帐户登录 。该级别的文件可以在/ home/flag01中找到。
进入level01这个账户后根据提示在/ home/flag01,发现有flag01这个文件 ,我尝试的执行这个文件 得到了 and now what?输出
根据源代码可以看到
setresuid()设置调用进程的真实用户ID,有效用户ID和保存的set-user-ID。
非特权用户进程可以将真实的UID,有效的UID和保存的set-user-ID,各自改为以下之一:当前的真实UID,当前有效UID或当前保存的set-user-ID。
特权进程(在Linux上,具有CAP_SETUID功能的进程)可以将真正的UID,有效的UID和保存的set-user-ID设置为任意值。
setresgid()设置真正的GID,有效的GID和保存的调用进程的set-group-ID(并且始终将文件系统GID修改为与有效GID相同),对非特权进程具有相同的限制。
关键点还是在/usr/bin/env ,源代码中使用system 调用系统命令 ,使用env 这个命令,去输出 and now what?这个字符串
Linux系统里的env命令 可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令。下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的变量;env命令显示当前用户的变量;export命令显示当前导出成用户变量的shell变量。每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC,BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
可以看到 在PATH 中环境变量中有带s的,意思就是spuer了,在视频中大牛进行了用户环境变量(包括源代码中 也是使用env 中 去输出字符串)
进行特定的权限赋予。
可以对比 对用户变量的前后改变
当我再次运行的时候发现是失败的,原因是出在那呢
这意味着我们可以提供我们自己的echo,修改路径,以便这个echo被调用优先于内置,然后我们可以运行任意命令。
当然是少了echo 这个文件
越权成功,得到了flag