BaseCTF week3 (web&misc 部分)wp

BaseCTF week3 (web&misc 部分)wp

BaseCTF week3

杂项

[Week3] 白丝上的flag

描述:某出题人赠送大家flag时遭遇了信号干扰, 幸好我们在不知名小网站找到了写入flag前的图片, 尝试还原信息吧!

提示:flag是单色

附件:

在这里插入图片描述
#task.py from PIL import Image from random import randint import sys def ez_add(a,b,c,d): global iv h = (a+b+c+d+iv) % 256 e = b f = c g = d iv = (b+c+d+iv) % 256 return e,f,g,h def confuse(data): r,g,b,a = data for _ in range(8): r,g,b,a = ez_add(r,g,b,a) return r,g,b,a def confuse_image(flag): global iv iv = flag.getpixel((1,1))[0] img = Image.new('RGBA', (flag.width, flag.height)) for w in range(img.width): for h in range(img.height): img.putpixel((w, h), confuse(flag.getpixel((w,h)))) return img if __name__ == '__main__': iv = 0 flag = Image.open("./de_image.png") img = confuse_image(flag) img.save("en_image.png") 

解密思路:

  1. 逆向 confuse 函数: 由于 confuse 函数是对像素进行简单的加法运算,我们可以通过逆向运算来解密。
  2. 单色图像特点: 单色图像的每个像素的 RGB 值都相同,我们可以利用这个特点来简化解密过程。

脚本:

from PIL import Image def ez_sub(h, e, f, g): global iv a = (h - e - f - g - iv) % 256 iv = (e + f + g + iv) % 256 return a def unconfuse(data): r, g, b, a = data for _ in range(8): r = ez_sub(r, g, b, a) return r, g, b, a def unconfuse_image(img): global iv iv = img.getpixel((1, 1))[0] flag = Image.new('RGBA', (img.width, img.height)) for w in range(img.width): for h in range(img.height): flag.putpixel((w, h), unconfuse(img.getpixel((w, h)))) return flag if __name__ == '__main__': iv = 0 img = Image.open("en_image.png") flag = unconfuse_image(img) flag.save("de_image_decrypted.png") 

得到de_image_decrypted.png,使用Stegsolve.jar查看red plane 0发现flag

在这里插入图片描述
BaseCTF{there_1s_the_flag@} 
[Week3] 纯鹿人

附件:

在这里插入图片描述
cGFzc3dvcmTvvJppa3VuaWt1bg== base64解码 password???ikunikun 

这里我一开始的思路就是将文档中的表情包保存下来使用WinHex打开,并没用什么发现,然后搜索发现可能是使用jphs,但是最后发现不行

在这里插入图片描述

没用思路就暂时放弃了

后面就是在群里看见有人讨论上周[Week2]哇!珍德食泥鸭的另一种解法

于是我试着将文档改为zip后缀,发现

在这里插入图片描述

将其丢尽WinHex编辑器中得到

在这里插入图片描述

使用foremost进行分离得到一个新的zip文件,密码为ikunikun,即可得到flag

CTF-MISC隐写总结_ctf mp4隐写-ZEEKLOG博客

[Week3] 我要吃火腿!

附件:

在这里插入图片描述
#我要吃火腿!.txt ~呜嗷嗷嗷嗷呜啊嗷呜~呜嗷呜呜~嗷~嗷啊嗷啊呜嗷嗷嗷呜~嗷~呜嗷嗷~~嗷嗷嗷呜啊呜啊~呜嗷呜呜~嗷呜啊啊嗷啊呜嗷呜~呜~嗷~呜嗷~~啊嗷嗷嗷呜啊呜啊啊呜嗷呜呜~嗷嗷嗷啊嗷啊呜嗷呜~~~嗷~呜呜嗷呜~嗷嗷嗷呜呜~嗷啊呜嗷呜呜~嗷~~啊嗷啊呜嗷嗷~嗷~嗷~呜呜嗷~嗷嗷嗷嗷呜呜嗷啊~呜嗷呜呜~嗷嗷嗷啊嗷啊呜嗷嗷啊呜~嗷~呜呜呜~~嗷嗷嗷呜啊呜啊嗷呜嗷呜呜~呜啊~啊嗷啊呜~~啊啊~嗷~呜呜嗷呜呜嗷嗷嗷呜啊嗷~嗷呜嗷呜呜~嗷嗷~啊嗷啊呜嗷嗷嗷嗷~嗷~呜嗷嗷啊~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜~嗷呜啊啊嗷啊呜嗷呜嗷嗷~嗷~呜呜呜嗷~嗷嗷嗷呜啊呜嗷~呜嗷呜呜~呜~嗷啊嗷啊呜嗷呜~~~嗷~呜嗷~~啊嗷嗷嗷呜啊嗷啊呜呜嗷呜呜~嗷嗷嗷啊嗷啊呜嗷嗷呜~~嗷~呜呜嗷呜嗷嗷嗷嗷呜呜嗷~嗷呜嗷呜呜啊呜嗷呜啊嗷啊呜啊啊呜呜~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜呜嗷呜~嗷嗷嗷呜啊嗷呜嗷呜嗷呜呜~嗷呜嗷啊嗷啊呜~~啊啊~嗷~呜呜嗷嗷呜嗷嗷嗷呜啊呜~嗷呜嗷呜呜~呜啊~啊嗷啊呜嗷嗷嗷嗷~嗷~呜呜呜嗷啊嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊呜呜嗷啊嗷啊呜~嗷啊~~嗷~呜嗷~啊啊嗷嗷嗷呜呜呜嗷~呜嗷呜呜~呜~~啊嗷啊呜~呜~~~嗷~呜嗷呜呜~嗷嗷嗷呜呜嗷~~呜嗷呜呜啊嗷呜~啊嗷啊呜~呜啊~~嗷~呜呜呜呜~嗷嗷嗷呜呜呜啊呜呜嗷呜呜啊呜啊嗷啊嗷啊呜~嗷呜~~嗷~呜嗷嗷~~嗷嗷嗷呜呜呜嗷~呜嗷呜呜~呜~~啊嗷啊呜~呜嗷呜~嗷~呜嗷啊嗷~嗷嗷嗷呜呜~嗷嗷呜嗷呜呜呜啊嗷呜啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜啊啊呜呜~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜呜呜呜啊嗷嗷嗷呜啊嗷~嗷呜嗷呜呜~呜啊~啊嗷啊呜嗷嗷嗷~~嗷~呜嗷嗷~~嗷嗷嗷呜啊嗷嗷啊呜嗷呜呜~呜呜~啊嗷啊呜嗷嗷嗷嗷~嗷~呜呜嗷~呜嗷嗷嗷呜呜嗷啊~呜嗷呜呜~嗷嗷嗷啊嗷啊呜嗷嗷啊呜~嗷~呜呜呜~~嗷嗷嗷呜啊呜啊嗷呜嗷呜呜~呜啊~啊嗷啊呜~~啊啊~嗷~呜呜嗷呜呜嗷嗷嗷呜啊嗷~嗷呜嗷呜呜~嗷嗷~啊嗷啊呜嗷嗷嗷嗷~嗷~呜嗷嗷啊~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷~啊啊嗷啊呜嗷呜~呜~嗷~呜呜嗷嗷呜嗷嗷嗷呜呜嗷啊啊呜嗷呜呜啊嗷嗷嗷啊嗷啊呜~嗷啊~~嗷~呜呜嗷嗷嗷嗷嗷嗷呜啊呜呜啊呜嗷呜呜啊嗷呜~啊嗷啊呜嗷嗷嗷呜~嗷~呜嗷呜啊呜嗷嗷嗷呜嗷啊~呜呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜~嗷啊~啊嗷啊呜嗷嗷~嗷~嗷~呜呜呜嗷~嗷嗷嗷呜啊嗷呜嗷呜嗷呜呜啊嗷呜~啊嗷啊呜~呜啊嗷~嗷~呜嗷嗷~~嗷嗷嗷呜啊嗷呜呜呜嗷呜呜~呜嗷嗷啊嗷啊呜嗷呜~~~嗷~呜呜嗷呜嗷嗷嗷嗷呜啊嗷呜嗷呜嗷呜呜~呜啊呜啊嗷啊呜嗷呜~呜~嗷~呜呜嗷嗷嗷嗷嗷嗷呜啊呜~嗷呜嗷呜呜啊嗷~~啊嗷啊呜嗷嗷嗷呜~嗷~呜嗷嗷~呜嗷嗷嗷呜啊呜呜呜呜嗷呜呜~嗷~嗷啊嗷啊呜嗷嗷~嗷~嗷~呜呜嗷嗷~嗷嗷嗷呜呜嗷啊~呜嗷呜呜啊嗷嗷嗷啊嗷啊呜~嗷呜嗷~嗷~呜~啊啊呜嗷嗷嗷呜嗷啊~呜呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜~嗷~呜啊嗷啊呜嗷嗷啊啊~嗷~呜呜呜嗷呜嗷嗷嗷呜呜嗷嗷~呜嗷呜呜~嗷嗷嗷啊嗷啊呜~嗷啊~~嗷~呜呜嗷啊嗷嗷嗷嗷呜啊嗷嗷呜呜嗷呜呜啊嗷呜~啊嗷啊呜嗷呜~呜~嗷~呜呜嗷嗷嗷嗷嗷嗷呜啊嗷嗷呜呜嗷呜呜~嗷~啊啊嗷啊呜嗷嗷嗷嗷~嗷~呜嗷嗷呜~嗷嗷嗷呜啊嗷~~呜嗷呜呜~嗷~嗷啊嗷啊呜嗷嗷啊呜~嗷~呜嗷嗷呜~嗷嗷嗷呜啊嗷呜~呜嗷呜呜~嗷啊嗷啊嗷啊呜嗷呜~~~嗷~呜呜嗷嗷嗷嗷嗷嗷呜呜嗷~嗷呜嗷呜呜啊嗷嗷嗷啊嗷啊呜~呜呜呜~嗷~呜~啊啊呜嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜啊嗷呜~呜嗷呜呜~嗷啊嗷啊嗷啊呜嗷呜~~~嗷~呜呜嗷嗷嗷嗷嗷嗷呜呜~~啊呜嗷呜呜~嗷嗷嗷啊嗷啊呜~~啊嗷~嗷~呜嗷嗷~~嗷嗷嗷呜呜~嗷呜呜嗷呜呜啊呜呜嗷啊嗷啊呜~嗷啊~~嗷~呜呜嗷呜~嗷嗷嗷呜啊嗷呜嗷呜嗷呜呜~嗷呜嗷啊嗷啊呜~~啊啊~嗷~呜呜嗷嗷呜嗷嗷嗷呜啊呜~嗷呜嗷呜呜~呜啊~啊嗷啊呜嗷嗷嗷嗷~嗷~呜呜呜嗷啊嗷嗷嗷呜呜~~啊呜嗷呜呜~嗷嗷嗷啊嗷啊呜~嗷啊~~嗷~呜嗷嗷呜嗷嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊呜啊啊啊嗷啊呜~~啊嗷~嗷~呜~啊啊呜嗷嗷嗷呜嗷啊~呜呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜~呜~啊啊嗷啊呜嗷嗷呜嗷~嗷~呜呜呜嗷~嗷嗷嗷呜啊嗷啊~呜嗷呜呜啊嗷呜~啊嗷啊呜嗷嗷啊啊~嗷~呜呜呜~~嗷嗷嗷呜啊嗷啊嗷呜嗷呜呜~嗷呜呜啊嗷啊呜~嗷嗷~~嗷~呜呜嗷~啊嗷嗷嗷呜啊呜啊嗷呜嗷呜呜~呜啊~啊嗷啊呜嗷呜啊~~嗷~呜呜呜呜嗷嗷嗷嗷呜啊呜呜~呜嗷呜呜啊~呜啊啊嗷啊呜嗷嗷嗷呜~嗷~呜呜嗷啊嗷嗷嗷嗷呜啊嗷~~呜嗷呜呜~嗷~嗷啊嗷啊呜~嗷呜~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷啊啊呜嗷呜呜~呜~啊啊嗷啊呜嗷嗷~呜~嗷~呜嗷嗷呜啊嗷嗷嗷呜呜嗷~嗷呜嗷呜呜啊嗷呜~啊嗷啊呜嗷嗷~嗷~嗷~呜呜呜嗷啊嗷嗷嗷呜呜嗷嗷~呜嗷呜呜~嗷~呜啊嗷啊呜~呜呜呜~嗷~呜~啊啊呜嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜呜嗷嗷~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷啊~~嗷~呜嗷嗷~~嗷嗷嗷呜啊嗷啊呜呜嗷呜呜啊嗷呜呜啊嗷啊呜嗷呜嗷啊~嗷~呜呜呜嗷呜嗷嗷嗷呜啊嗷~嗷呜嗷呜呜~呜啊~啊嗷啊呜嗷嗷嗷嗷~嗷~呜嗷嗷呜~嗷嗷嗷呜啊嗷呜~呜嗷呜呜~嗷啊嗷啊嗷啊呜嗷呜~~~嗷~呜呜嗷嗷嗷嗷嗷嗷呜呜嗷~嗷呜嗷呜呜呜啊嗷呜啊嗷啊呜啊啊呜呜~嗷~呜呜呜呜~嗷嗷嗷呜啊嗷嗷啊呜嗷呜呜~呜啊呜啊嗷啊呜~~啊啊~嗷~呜呜呜呜啊嗷嗷嗷呜啊嗷~嗷呜嗷呜呜~呜啊~啊嗷啊呜嗷嗷嗷~~嗷~呜嗷~~啊嗷嗷嗷呜啊嗷啊~呜嗷呜呜~嗷啊嗷啊嗷啊呜嗷嗷啊嗷~嗷~呜嗷嗷呜~嗷嗷嗷呜呜嗷啊啊呜嗷呜呜啊啊~~啊嗷啊呜嗷嗷~嗷~嗷~呜呜嗷~嗷嗷嗷嗷呜啊嗷嗷啊呜嗷呜呜~呜啊呜啊嗷啊呜嗷嗷呜~~嗷~呜嗷嗷~呜嗷嗷嗷呜啊嗷~呜呜嗷呜呜~呜呜~啊嗷啊呜嗷嗷嗷啊~嗷~呜嗷嗷呜啊嗷嗷嗷呜呜嗷~~呜嗷呜呜啊嗷呜~啊嗷啊呜~嗷嗷啊~嗷~呜嗷啊呜~嗷嗷嗷呜啊嗷呜嗷呜嗷呜呜~嗷呜嗷啊嗷啊呜~嗷啊呜~嗷~呜呜嗷啊呜嗷嗷嗷呜啊呜嗷~呜嗷呜呜~嗷~啊啊嗷啊呜~嗷嗷啊~嗷~呜嗷嗷啊嗷啊 

解码网站:兽音译者在线编码解码 - 兽音翻译咆哮体加密解密 (iiilab.com)

def xor_with_ham(input_file, output_file): ham_bytes = [0x48, 0x61, 0x6D] with open(input_file, 'rb') as f: data = bytearray(f.read()) for i in range(len(data)): data[i] ^= ham_bytes[i % 3] with open(output_file, 'wb') as f: f.write(data) xor_with_ham('Hamorl.jpg', 'Ham.jpg') 

解密脚本

def xor_with_ham_decrypt(input_file, output_file): ham_bytes = [0x48, 0x61, 0x6D] with open(input_file, 'rb') as f: data = bytearray(f.read()) for i in range(len(data)): data[i] ^= ham_bytes[i % 3] with open(output_file, 'wb') as f: f.write(data) # 使用函数解密 xor_with_ham_decrypt('Ham.jpg', 'Hamorl.jpg') 

得到Hamorl.jpg

不过还是损坏的,修改文件头为ffd8ffe1保存即可

在这里插入图片描述
在这里插入图片描述

到这里就不会了,试了很大

Read more

nginx 部署前端vue项目

nginx 部署前端vue项目

👨‍⚕主页: gis分享者 👨‍⚕感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕收录于专栏:前端工程师 文章目录 * 一、🍓什么是nginx? * 二、🍓nginx 部署前端vue项目步骤 * 2.1 🍉安装nginx * 2.1.1 🍌windows环境安装 * 2.1.2 🍌linux环境安装 * 2.2 🍉打包vue项目 * 2.3 🍉配置nginx 一、🍓什么是nginx? Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡。 优点: * 支持海量高并发:采用IO多路复用epoll。官方测试Nginx能够支持5万并发链接,实际生产环境中可以支撑2-4万并发连接数。 * 内存消耗少 * 可商业化 * 配置文件简单 除了这些优点还有很多,比如反向代理功能,灰度发布,负载均衡功能等

前端网页开发学习(HTML+CSS+JS)有这一篇就够!

前端网页开发学习(HTML+CSS+JS)有这一篇就够!

目录 HTML教程 ▐ 概述 ▐ 基础语法 ▐ 文本标签 ▐ 列表标签  ▐ 表格标签 ▐ 表单标签 CSS教程 ▐ 概述 ▐ 基础语法 ▐ 选择器 ▐ 修饰文本 ▐ 修饰背景 ▐ 透明度 ▐ 伪类 ▐ 盒子模型 ▐ 浮动 ▐ 定位 JavaScript教程 ▐ 概述 ▐ 基础语法 ▐ 函数 ▐ 事件 ▐ 计时   ▐ HTML DOM html css js三者之间的关系 HTML教程 ▐ 概述 HTML是HyperText  Markup  Language的缩写,即超文本标记语言。它为我们提供了许多功能不同的标签,最终运行时由浏览器对标签进行解析,呈现出不同标签的样子。 ▐ 基础语法 注释:  <!--   -->        ( Ctrl + / ) <body> <

从零到一:构建一个实时语音翻译应用(Vue3 + Web Speech API)

从零到一:构建一个实时语音翻译应用(Vue3 + Web Speech API)

从零到一:构建一个实时语音翻译应用(Vue3 + Web Speech API) 前言 在全球化日益深入的今天,跨语言交流变得越来越重要。传统的翻译工具需要手动输入文本,效率较低。本文将带你从零开始,使用 Vue 3 和 Web Speech API 构建一个实时语音翻译应用,实现语音识别、实时翻译和语音播报的完整流程。 预览效果 项目地址:[https://github.com/lewuzhijing/translating] 在线演示:[https://transnow.asia/] 实时翻译app版本:https://pan.baidu.com/s/1nj_LPtiutEIsO_7-S1KWAw 提取码:rvuh -----演示图------- 项目概述 本项目是一个基于 Vue 3 的实时语音翻译应用,

医疗咨询机器人怕出事?Qwen3Guard-Gen-WEB帮你拦截风险

医疗咨询机器人怕出事?Qwen3Guard-Gen-WEB帮你拦截风险 在AI医疗应用加速落地的今天,一个现实困境正困扰着每家尝试部署智能问诊系统的机构:既要让患者获得即时、专业的健康建议,又必须确保每一句回复都经得起医学伦理、法律法规和临床安全的三重检验。一句看似无害的“试试偏方”可能延误治疗,一段模糊的“可能有风险”可能引发恐慌,而一次对禁忌症的疏漏判断,甚至可能危及生命。 更棘手的是,通用大模型并非为医疗场景而生——它不了解药品相互作用,不掌握最新诊疗指南,也无法识别患者描述中隐含的急症信号(如“头痛伴喷射性呕吐”实为颅内压增高征兆)。当医疗咨询机器人直接暴露在用户自由输入的语境中,它就像一位未经资质认证的“云医生”,能力越强,潜在风险越高。 正是在这种高敏感、零容错的现实压力下,Qwen3Guard-Gen-WEB 的出现不是锦上添花,而是雪中送炭。它并非用来生成诊断结论,而是作为一道嵌入式“安全闸门”,专为拦截那些游走在合规边缘、潜藏临床风险、违背医学常识的输出内容。它不替代医生,但能确保机器人永远不说出不该说的话。 1. 它不是医生,却是医疗AI的“执业资格审查员