【pwnable.kr】 shellshock
pwnable从入门到放弃,第五题。

ssh shellshock@pwnable.kr -p2222 (pw:guest)
这题主要涉及了一个关于bash的CVE漏洞。
首先还是下载源代码审计一下,shellshock.c
#include <stdio.h>
int main(){
setresuid(getegid(), getegid(), getegid());
setresgid(getegid(), getegid(), getegid());
system("/home/shellshock/bash -c 'echo shock_me'");
return ;
}
首先是一个关于可执行程序权限的问题,就是关于uid和gid的。
先看一下各个文件的权限

首先启动时,用户是shellshock权限,也就是other权限,这样的话对flag还是不可读的。linux开关机熟练选手根本就没懂啥意思。
后来发现shellshock这个可执行文件对group是具有特殊权限w的,这就意味着egid是属于shellshock_pwn的,这个权限很高,对flag文件是可读的,这也就涉及到了linux可执行文件权限继承和赋予问题。
我查阅了一下《C和C++安全编码》书中讲权限部分的,这相当于设置了egid,因此在代码中setreuid中设置的各uid均是预置的高权限,即egid——shellshock_pwn,因此这个可执行文件在执行到system一行时,就已经是具有shellshock_pwn组权限的程序了。
bash也是用这个组权限在打开,所以对flag是可读的。
解决了权限问题,就可以考虑如何代码执行了,这个破壳漏洞是可以作为一个本地提权漏洞使用,参考金山毒霸在freebuf上的漏洞分析贴,:http://www.freebuf.com/articles/system/45390.html
可以使用上面提到了poc,
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
可验证这个漏洞在./bash上是存在的:

将echo v...' 换成想执行的命令 bash -c "cat ./flag"'
而./ bash -c "echo this is a test" 换成./shellshock

偷个懒,破壳漏洞明天再看。
【pwnable.kr】 shellshock的更多相关文章
- 【pwnable.kr】 asm
一道写shellcode的题目, #include <stdio.h> #include <string.h> #include <stdlib.h> #inclu ...
- 【pwnable.kr】 [simple login]
Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再 ...
- 【pwnable.kr】 brainfuck
pwnable.kr第二关第一题: ========================================= Download : http://pwnable.kr/bin/bfDownl ...
- 【pwnable.kr】 unlink
pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...
- 【pwnable.kr】 memcpy
pwnable的新一题,和堆分配相关. http://pwnable.kr/bin/memcpy.c ssh memcpy@pwnable.kr -p2222 (pw:guest) 我觉得主要考察的是 ...
- 【pwnable.kr】 codemap
pwnable新的一题. download: http://pwnable.kr/bin/codemap.exe ssh codemap@pwnable.kr -p2222 (pw:guest) 这道 ...
- 【pwnable.kr】 uaf
目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...
- 【pwnable.kr】input
这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...
- 【pwnable.kr】cmd2
这道题是上一个cmd1的升级版 ssh cmd2@pwnable.kr -p2222 (pw:mommy now I get what PATH environmentis for :)) 登录之后, ...
随机推荐
- 28 最小的K个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路: 解法1:对于小规模数据,可以采用类似前题的快速排序思路 ...
- 「JSOI2008」Blue Mary的旅行
传送门 Luogu 解题思路 分层图加网络流,有点像这题 可以证明最多不超过100天,所以才可以分层,不然图的规模会很大. 首先连源点汇点: \((s,1,INF), (n, t, INF)\) 以时 ...
- golang的传值调用和传引用调用
传值还是传引用 调用函数时, 传入的参数的 传值 还是 传引用, 几乎是每种编程语言都会关注的问题. 最近在使用 golang 的时候, 由于 传值 和 传引用 的方式没有弄清楚, 导致了 BUG. ...
- 087、Java数组之对象数组的静态初始化
01.代码如下: package TIANPAN; class Book { private String title; private double price; public Book(Strin ...
- Codeforces #536 A..D 题解
foreword ummm... 开始前几个小时被朋友拉来打了这一场,总体海星,题目体验极佳,很符合口味,稍微有点点简单了不知道是不是因为是 New Year Round,很快就打到了 D,但是题目阅 ...
- pyhton机器学习入门基础(机器学习与决策树)
//2019.07.26#scikit-learn数据挖掘工具包1.Scikit learn是基于python的数据挖掘和机器学习的工具包,方便实现数据的数据分析与高级操作,是数据分析里面非常重要的工 ...
- Task使用注意
1. CancellationTokenSource的使用 https://binary-studio.com/2015/10/23/task-cancellation-in-c-and-things ...
- JAVA虚拟机:内存回收策略及算法
java虚拟机中的程序计数器区.虚拟机栈区.本地方法栈区3个区域是随着线程的创建而创建,随着线程的结束而结束时,内存自然得到回收,所以这三个区域不需要过多考虑内存的回收问题. java虚拟机中的方法区 ...
- swoole之异步文件IO
一.代码部分 读: <?php /** * 异步文件系统仅限于4.3.0之前的版本 * 读取文件 */ $filename = dirname(__FILE__).DIRECTORY_SEPAR ...
- C++面试常见问题——14内存管理
内存管理 内存管理由三种方式: 自动存储 静态存储 动态存储 自动存储 对于函数的形参.函数内部变量.和结构体变量等,编译器在函数运行过程中在栈中自动对其分配内存,调用结束后对其进行销毁.变量的声明周 ...