获取10,11关卡的flag。
题目提示我们,只用满足access()函数系统调用的条件,则flag10二进制程序会上传任何给出的文件。当然,我们需要做的就是让flag10读出token就可以了。
代码太长,就不贴出来了。
我们着重需要关注access函数,access函数用户是否有操作文件的权限,有的话则open,没有的话则error。
逻辑上看上去是没有问题的,但是代码忽略了一个情况:条件竞争。也就是说在access之后,open之前打一个时间差,我们可以access一个我们有权限的文件,然后在open之前将那个文件替换为我们没有权限的文件,这样的话就可以读取我们没有权限的文件了。
很明显,我们对token是没有读取权限的,从下图就可以看到
接下来是我们具体的操作
写两个shell脚本
“1.sh”内容如下
创建文件,使用while循环,创建指向我们的文件的链接,创建指向token的链接
“2.sh”内容如下
在循环内将相关信息发到nc的客户机上,其中192.168.24.134便是kali的ip
在kali上开启nc
使用nc监听
后台执行1.sh
后台执行2.sh后结果如图
Kali上得到token了
使用flag10以及图上的密码登录
成功通关
在进入下一关之前我们需要将这一关的进程结束掉
列出所有进程
结束我们启动的1.sh和2.sh的进程
接下来我们可以进入下一关了
11.
这一道题目是存在bug的,按照通过要求而言,我们是不算通关的,我也没做出来。这里就贴下国外大牛的博客,权当了解就好。
https://73696e65.github.io/2015/06/exploit-exercises-nebula-11-15
。
获取关卡12,13的flag
题目提示有后门程序在50001端口监听
查看代码
其实不用看代码也知道,这种类型都是一个套路。就是我们输入一串明文,程序将其加密后与24行处的密文进行比较。一般的思路就是根据密码算法,输入相应的明文。不过此处并不是考察这点。
注意第19行接收我们的输入,然后在22行处理我们的输入,而处理我们的输入的hash算法在第4行开始的hash函数中实现,在hash函数里第5行io.popen是危险的调用方式,在Lua中,当开发人员使用未经验证的用户数据通过os.execute()或io.popen()Lua函数运行操作系统命令时,会受到命令注入的攻击
我们首先nc连接,并尝试在输入密码时进行命令注入
可以看到成功执行我们的命令
我们前面是用whoami作为例子,那么getflag应该也是可以的
成功通关
代码如下
代码的作用是:通过getuid获取当前用户的uid,如果等于FAKEUID(在第7行已经宏定义),则可以读取token
很明显,这题要想通过必须修改uid。或者说当getuid调用时,getuid得到的uid为1000.
用什么黑魔法呢?我们先来看一下当前的uid
Uid为1014,而我们需要的uid为1000,先用gdb调试
输入disas main反汇编主函数
注意到080484ef处调用函数,getuid(),再080484f4则是进行判断。判断后的结果就是getuid的返回值,也就是getuid获取到的uid。我们只要把这里的值修改为1000就可以了
按q退出,然后在判断语句处下断点
输入run执行程序
程序在断点处自动暂停,查看eax寄存器
可以看到打印出的值就是我们的uid,那么我们将其修改为1000就可以了
输入continue,程序继续运行
成功获取到token
切换为flag13用户,并使用上图token登录
执行getflag,成功通关
获取关卡14的flag14.
由题目的提示可知,flag14加密输入并且标准输出,题目需要我们解密一个加密过的token
首先进入flag14所在目录,运行flag14
提示需要-e参数,加密123为135
加密abc为ace
这个加密算法在多试几次也一样,很好看出来。
对于123而言,1+0=1,2+1=3,3+2=5,前一个加数是明文,后一个加数是数组下标。对于abc同样也是如此。
知道算法后,直接写出解密算法就可以了,拿python来做
注意一定要切换到/tmp路径,在flag路径我们没有写入权限
代码如下:
运行后得到明文
切换到flag14账户,使用上图明文登录,注意输入密码时不回显
执行getflag,成功通过
扩展
1.《unix环境高级编程》
2.《鸟哥的linux私房菜》
3.《深入理解linux内核》
参考
https://github.com/1u4nx/Exploit-Exercises-Nebula
https://nitesculucian.github.io/2017/10/24/180000-Exploit-Exercises-Nebula-07.html
https://mike-boya.github.io/blog/2016/02/15/exploit-exercises-nebula-level08/
https://73696e65.github.io/2015/06/exploit-exercises-nebula-11-15
http://blog.yyx.me/posts/exploit-exercises-nebula-level-15-19.html
http://www.kroosec.com/2012/11/nebula-level15.html
https://decepticode.wordpress.com/2016/05/04/nebula-level16/
https://mike-boya.github.io/blog/2016/02/22/exploit-exercises-nebula-level17/
http://www.php.cn/python-tutorials-372984.html
http://www.pwntester.com/blog/2013/11/27/nebula-level18-write-up/
http://blog.ferling.eu/wargames/nebula/level19
https://blog.csdn.net/hurricane_0x01/article/details/53926752
http://seclists.org/fulldisclosure/2014/May/128