Linux 提权
Linux提权技巧:cp、sudo、find与环境变量利用-CSDN博客
GNU cp / coreutils 中(常见 Linux 都是它):
-P/--no-dereference:不跟随软链接,复制链接本体。-H:只跟随 命令行参数里的软链接,复制目标内容。-L/--dereference:跟随所有软链接,复制目标内容。-p/--preserve[=mode|ownership|timestamps…]:默认会保留mode(权限位)等属性。-a/--archive:等价于-dR --preserve=all(保留所有属性)。
通配符提权最常用的就是:
注入--preserve=mode/-p保留 SUID,
或者注入-L/--dereference跟随软链读敏感文件。
1.SUID
1 | # 1) 放一个你自己的可执行文件 |
效果:cp --preserve=mode rootshell /priv/dir/,SUID 被保留,且属主变成 root,于是提权。
2.软连接
脚本中:
1 | cp -P * /var/www/html/marstream/ |
-P 本来禁止跟随软链。
但你可以用通配符注入 覆盖这个行为:
目录里放:
1 | > "--dereference" # 等价 -L |
root 实际执行类似:
1 | cp -P --dereference ff /var/www/html/marstream/ |
最后出现的 dereference 模式生效(GNU cp),于是 ff 被复制成普通文件,内容是 /flag,你就能在 marstream 里 cat ff。
3.配合后续 chmod/chown 的 glob(symlink 跟随)
很多脚本是:
1 | cp * /dst/ |
即使 cp 不跟随软链,chmod -R 默认会跟随(对 symlink 指向目标生效)。
所以你只要让 /dst/xx 变成 xx -> /flag,下一轮 chmod 就会把 /flag 权限改大,间接读到。
习题:
[0xGame_2025_week3]放开我的变量(cp通配符提权)
扫目录发现/asdback.php
1 |
|
连蚁剑
没有权限
start.sh:

cd /var/www/html/primary进入 primary 目录。
while : ... done &无限循环放到后台跑(&)。
cp -P * /var/www/html/marstream/:
每 5 秒把 *primary 目录下所有非隐藏文件*(* 不含点文件)复制到 marstream。
-P = *不跟随软链接*,遇到 symlink 会把 symlink 本身复制过去,而不是复制目标文件内容。
chmod 755 -R /var/www/html/marstream/:
递归把 marstream 下的所有文件/目录权限改成 755。
cp通配符提权

1 | cd /var/www/html/primary |