checkin

下载附件,一张图片,拖进010,在文件尾看到隐藏文本,提取并用社会主义价值解密

ez_forensics

提示为结合题目进行想象,我们会想到取证第一步vc挂载,但是需要密码,研究图片,lsb隐写,在row:G通道找到密钥



挂载,得到flag

真的是base64哦

考点base64隐写

点击查看代码
import base64
path = input("请输入加密文件路径\n")
file = open(path)
a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
aaa = ''
while True:
text = file.readline() # 只读取一行内容
# 判断是否读取到内容
text = text.replace("\n", "")
if not text:
break
if text.count('=') == 1:
aaa = aaa + \
str('{:02b}'.format((a.find(text[len(text)-2])) % 4))
if text.count('=') == 2:
aaa = aaa + \
str('{:04b}'.format((a.find(text[len(text)-3])) % 16))
file.close()
t = ""
ttt = len(aaa)
ttt = ttt//8*8
for i in range(0,ttt,8):
t = t + chr(int( aaa[i:i+8],2))
print(t)
GCTF{you_kn0w_base_sixsix_four}

嘿嘿,真的是无畏契约呢

base64转图片,得到一个二维码,(没想到是无畏契约官网吧)

lsb隐写

坚持不懈的压缩

password文本上赛博厨子,Megan35的base64表解密



得到key,下面解决嵌套的压缩包,代码爆破

点击查看代码
import os
import zipfile # 设置密码和初始压缩包名称
password = "GCTF_yeyeyeye"
initial_zip = r"final_zip.zip" # 最外层的压缩包
output_dir = "output" # 用于存储每层解压结果的临时文件夹
temp_file = "temp_extracted.zip" # 每次解压缩时的临时文件 # 创建输出目录
if not os.path.exists(output_dir):
os.makedirs(output_dir) # 解压缩 1000 次
current_zip = initial_zip
for i in range(1000):
with zipfile.ZipFile(current_zip) as zf:
# 获取压缩包中的文件名
inner_file = zf.namelist()[0] # 将文件解压到临时文件夹
zf.extract(inner_file, output_dir, pwd=bytes(password, 'utf-8')) # 更新为下次需要解压的文件路径
current_zip = os.path.join(output_dir, inner_file) # 重命名为临时文件以便处理下一层
if i < 999:
# 如果目标文件存在,先删除它
if os.path.exists(temp_file):
os.remove(temp_file) os.rename(current_zip, temp_file)
current_zip = temp_file print("解压缩完成!最终文件位于:", current_zip)

打开最后一层得到flag

ez_word

word文档隐写,用系统自带word打开,设置显示隐藏文字,并改变字体颜色,可以得到2段flag

接着拖进010,发现内嵌压缩包,用foremost分离,出现加密文本base100(emoji解密)-Unicode-base64-base58得到最后一段:m1ssccc$$}

得到最后一段flag

最后拼接GCTF{welc33me_w0rd@_m1ssccc$$}

可惜雪飘进了双眼

题目即方法,空白文档隐写可以搜到snow隐写,但是没有密钥,里面有一个加密文件,拖进010,是个类png,16进制被交换过

点击查看代码
def swap_pairs(s):

    chars = list(s)

    for i in range(0, len(chars) - 1, 2):
chars[i], chars[i + 1] = chars[i + 1], chars[i] return ''.join(chars) # 示例
input_string = ""
result = swap_pairs(input_string)
print(result)

转换结果生成文件,是个正常的png图片,获得key:goodjob

https://blog.csdn.net/gitblog_09809/article/details/143005180

snow隐写解密,得到flag

爱玩原神?

拖进010,发现压缩包,手动分离,发现需要密码,根据提示water,我们想到盲水印解密

得到密钥,打开压缩包

kp,是个倒过来的zip,倒转一下

点击查看代码
import re

str1 = ''

str1 = re.sub(r"(?<=\w)(?=(?:\w\w)+$)", " ", str1)
print(str1)
list1 = str1.split()
list1 = list(reversed(list1))
str1 = " ".join(list1)
print(str1)

得到zip中的文本

base58解密

ez_python?

一个无限循环,进行二分查找。在每次迭代中,检查当前范围的上下限之差是否为1。如果是,就获取 1[1]的值并打印然后终止循环

点击查看代码
import math

def battle(level):
HP = 4 * level + 100
ATK = max(3 * level - 90, 1)
M_ATK = max(3 ** 10 - level - 5, 1)
return True if math.ceil(3 ** 15 / ATK) < HP / M_ATK else False geitaoshenketou = 3 ** 100 # 超大
l = [0, geitaoshenketou]
while True:
if l[1] - l[0] == 1:
res = l[1] # 直接使用l[1]的值
print('flag{' + str(res) + '}')
break
elif battle(sum(l) // 2):
l = [l[0], sum(l) // 2]
else:
l = [sum(l) // 2, l[1]]

最后进行md5封装即可
#**ez_流量**
sql布尔盲注
过滤掉http的数据包
`tshark -r timu.pcapng -e http.request.uri -T fields -Y 'http.request.uri' > http.txt`
正则提取数字,转换字符

点击查看代码
with open('http.txt','r') as f:
data = f.read() re1 = r"from%20t\),(\d+),1\)\)=(\d+)--+" pat = re.compile(re1)
a = data.split("\n")
b = {}
for i in a:
try:
rea = pat.search(i)
b[rea[1]] = rea[2]
except:
continue flag = ""
for i in b:
flag+=chr(int(b[i])) print(flag)
#flag{w1reshARK_ez_1sntit}

#**贪吃蛇**
真正的杂项,开始会去修改数值通关去得到flag,可惜出题人就没有将flag塞入游戏中,于是另辟途径,在js,找到许多加密方式,云影,密钥xor等等,解出全是fakeflag
根据提示quadoo解密,把keyword拿去解密一下

点击查看代码
p = 75622568597436029009683044560394575119431158827043458105864728211786000512791
a = 85026711271052943789730326470363572456786041535797705690318308421777954424637
b = 66098127120627409453551272472994257595002986659473620297996205313006369997437
k = 71968714696941641430925190199790590508283651626076908908651765926156451465871
e = elliptic curve defined by y^2 = x^3 + 9404142673616914780047281909968997337354882708754247584453580209991953911846*x + 66098127120627409453551272472994257595002986659473620297996205313006369997437 over finite field of size 75622568597436029009683044560394575119431158827043458105864728211786000512791
c1 = (66066117662242699468821517595725192879333073435277077882183775950349261792467 : 40228403532245213512933082571052263552637509365165217873276918743294218162507 : 1)
c2 = (55526569053402697811523099820610338430800152093428843463015712899070451620897 : 60523238843668948261533610341946158184574959321865109372495508584794806989724 : 1) cipher_left = 53849857630899617966127718792148796514724188262128669062866230792068679727635 cipher_right = 27732384893837974040803834222639325311271071577349345606901477238226516946069

?_?这像是输出方式,但是没有加密方式

看下snakeisme.js有一串很像base64的东西

把“-”全部替换成“+”

点击查看代码
input_file_path = 'input.txt'
output_file_path = 'output.txt' with open(input_file_path, 'r', encoding='utf-8') as file:
content = file.read() content = content.replace('-', '+') with open(output_file_path, 'w', encoding='utf-8') as file:
file.write(content) print("减号已成功替换为加号。")

拿去base64解密

再brainfuck解密

得到

点击查看代码
from Crypto.Util.number import getPrime
from libnum import s2n
from secret import flag p = getPrime(256)
a = getPrime(256)
b = getPrime(256)
E = EllipticCurve(GF(p),[a,b])
m = E.random_point()
G = E.random_point()
k = getPrime(256)
K = k * G
r = getPrime(256)
c1 = m + r * K
c2 = r * G
cipher_left = s2n(flag[:len(flag)//2]) * m[0]
cipher_right = s2n(flag[len(flag)//2:]) * m[1] print(f"p = {p}")
print(f"a = {a}")
print(f"b = {b}")
print(f"k = {k}")
print(f"E = {E}")
print(f"c1 = {c1}")
print(f"c2 = {c2}")
print(f"cipher_left = {cipher_left}")
print(f"cipher_right = {cipher_right}")

加密方式出来了,ecc曲线加密

K = k * G,c1 = m + r * K,c2 = r * G我们手算一下三个式子,最后化简得到m = c1 - k * c2

下面就是编写代码了

点击查看代码
#exp
from Crypto.Util.number import *
p = 75622568597436029009683044560394575119431158827043458105864728211786000512791
a = 85026711271052943789730326470363572456786041535797705690318308421777954424637
b = 66098127120627409453551272472994257595002986659473620297996205313006369997437
k = 71968714696941641430925190199790590508283651626076908908651765926156451465871
E = EllipticCurve(GF(p),[a,b])
c1 =E([66066117662242699468821517595725192879333073435277077882183775950349261792467, 40228403532245213512933082571052263552637509365165217873276918743294218162507])
c2 = E([55526569053402697811523099820610338430800152093428843463015712899070451620897, 60523238843668948261533610341946158184574959321865109372495508584794806989724])
cipher_left = 53849857630899617966127718792148796514724188262128669062866230792068679727635
cipher_right = 27732384893837974040803834222639325311271071577349345606901477238226516946069
m = c1 - k * c2
left = cipher_left//m[0]
right = cipher_right//m[1]
print(long_to_bytes(int(left))+long_to_bytes(int(right)))

赣CTF-Misc方向wp的更多相关文章

  1. 2022宁波市第五届网络安全大赛MISC方向部分wp

    BlackAndWhite 1. 得到了三百多张黑白颜色的图片,将白色图片转为数字0,黑色图片转为数字1,得到二进制字符串 01100110011011000110000101100111011110 ...

  2. 2018 巅峰极客CTF misc writeup

    flows 拿到一个pcap包,用wireshark打开,发现是USB协议,尝试在kali下使用tshark提取,提取失败,发现异常.回到wireshark分析数据.在其中一个数据包中发现了tip 把 ...

  3. 01 CTF MISC 杂项 知识梳理

    1.隐写术( steganograhy ) 将信息隐藏到信息载体,不让计划的接收者之外的人获取信息.近几年来,隐写术领域已经成为了信息安全的焦点.因为每个Web站点都依赖多媒体,如音频.视频和图像.隐 ...

  4. ctf misc 学习总结大合集

    0x00 ext3 linux挂载光盘,可用7zip解压或者notepad搜flag,base64解码放到kali挂载到/mnt/目录 mount 630a886233764ec2a63f305f31 ...

  5. 【CTF MISC】隐写术wireshark找出图片-“强网杯”网络安全挑战赛writeup

    这场CTF中有一道题是分析pcap包的.. 13.大黑阔: 从给的pcap包里把图片提取出来,是一张中国地图. 题目提示是黑阔在聊天,从数据里可以找出几段话. 思路:主要考察wireshark的过滤规 ...

  6. 安恒西湖论剑线下上午CTF部分题目WP

    简单的做了两个题,一道逆向,一道misc,其他题目,因为博主上课,时间不太够,复现时间也只有一天,后面的会慢慢补上 先说RE1,一道很简单的win32逆向,跟踪主函数,R或者TAB按几下, 根据esp ...

  7. CG-CTF misc部分wp

    将Misc剥离出来了,已完结(coding gay不想做了) MISC1,图种一听图种,现将图片的GIF改为zip,然后解压得到另一张动图看动图最后一句话为‘都深深的出卖了我’,得到 flag2, 丘 ...

  8. 【WP】【web】中学生CTF | web部分wp

    $_GET 源码: <?php show_source(__FILE__); include 'config.php'; if(!isset($_GET['args'])){ die(); } ...

  9. ciscn 2022 misc 部分wp

    ​ 目录 everlasting_night ez_usb everlasting_night 提示是注意png数据块 然后注意图片通道数据可以用来lsb解码 下载是一张图片,尝试几种方法之后没有太大 ...

  10. 【CTF MISC】pyc文件反编译到Python源码-2017世安杯CTF writeup详解

    1.题目 Create-By-SimpleLab 适合作为桌面的图片 首先是一张图片,然后用StegSolve进行分析,发现二维码 扫码得到一串字符 03F30D0A79CB0558630000000 ...

随机推荐

  1. Netty - [01] 概述

    题记部分 一.介绍 Netty 是由JBOSS提供的一个Java开源框架,现为Github上的独立项目. Netty是一个异步的.基于事件驱动的网络应用框架,用以快速开发高性能.高可靠性的网络I/O程 ...

  2. Hbase - hbase hbck介绍

    原文地址:https://bbs.huaweicloud.com/blogs/353332 HBaseFsck(hbck)是一种命令行工具,可检查hbase集群的region一致性和表完整性的问题,同 ...

  3. 大数据之路Week10_day04 (Hbase的二级索引,二级索引的本质就是建立各列值与行键之间的映射关系)

    二级索引的本质就是建立各列值与行键之间的映射关系 HBASE是在hadoop之上构建非关系型,面向列存储的开源分布式结构化数据存储系统. Hbase的局限性: HBase本身只提供基于行键和全表扫描的 ...

  4. 【目标检测】一、初始的R-CNN与SVM

    1.流程 为什么要用SVM而不是CNN最后一层的softmax? 取什么模型必然是有标准衡量,这个流程取得是书上[4]写的,作者说他得实验证明SVM比FC的mAP要高,所以我流程暂且这样画了. R-C ...

  5. xpath 定位表格里面内容

    向上找页面唯一元素,依次为: 表格体/第一行/第14列 实现代码 Xpath==//tbody/tr[1]/td[11]

  6. 关闭windows计划重启

    前言 windows 总是自动计划更新 解决方案 需要禁用服务 "Windows Update" 和 "更新 Orchestrator 服务" 首先去这里下载P ...

  7. 【抓包】Fidder Script自动修改包

    Fiddler Script的本质是用JScript.NET编写的一个脚本文件CustomRules.js 但是它的语法很像C#但又有些不一样,比如不能使用@符号 通过修改CustomRules.js ...

  8. 10 卷积神经网络CNN原理

    1. 全连接层 前文中我们讨论的几乎都是全连接层,也就是在层间,每个神经元都与前一层的所有神经元相连接,如图: 也就是每层的每个feature,都与前一层所有features相关联,是前一层所有fea ...

  9. BUUCTF---RSA1

    RSA基础概念 rsa原理: RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 RSA算法的具体描述如下: (1) ...

  10. Netty源码—9.性能优化和设计模式

    大纲 1.Netty的两大性能优化工具 2.FastThreadLocal的实现之构造方法 3.FastThreadLocal的实现之get()方法 4.FastThreadLocal的实现之set( ...