NSSCTFmisc刷题记录

[NISACTF 2022]bqt

改后缀为pdf

打开pdf全选发现隐藏文字

根据题目提示是有进制之间的转换

直接十六进制转换不对

那么意味着字符的范围有问题

所有字节均大于128,我们又知道ASCII码表示范围是0-127,于是每一个字节都减去128,再转换成字符串,得到flag


m = "c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd"
flag=""
for i in range(0,len(m),2):
    hex = m[i:i+2]
    flag += chr(int(hex,16)-128)
print(flag)

[虎符CTF 2022]Plain Text

先base64解码得到一段乱七八糟的字符

 看大佬的wp发现这个需要转换为俄语,使用kali中的命令:iconv -f koi-7这里的koi-7是俄语编码的意思。

再百度翻译得到flag:HFCTF{apple_watermelon}

[SWPU 2019]Network

63,127,191,255循环,将他们转为二进制后,二进制数的前两个数字分别是 00、01、10、11,也就是TTL加密

也就是

脚本将上面的数据转换为二进制

import binascii
 
f = open('Network.txt', "r")
str = ''
Binary = ''
number = ''
while 1:
    num = f.readline()
    if not num:
        break
    if num.rstrip() == '63':  # 去掉每行后面的空格
        Binary = '00'
    elif num.rstrip() == '127':
        Binary = '01'
    elif num.rstrip() == '191':
        Binary = '10'
    elif num.rstrip() == '255':
        Binary = '11'
    str += Binary
for i in range(0, len(str), 8):
    number += chr(int(str[i:i + 8], 2))
data = binascii.unhexlify(number)
 
f2=open('1.txt','wb')
f2.write(data)
f2.close()

打开发现其实是一个压缩包,改后缀打开

压缩包有密码,尝试暴力破解还有伪加密都失败了,查看十六进制发现是一个嵌套压缩包,修复一下压缩包打开

得到flag.txx里面是一堆base64加密,估计需要多次base64解密

import base64

f = open('flag.txt','rb').read()
while True:
    f = base64.b64decode(f)
    if b'{' in f:
        print(f)
        break
    else:
        continue

[西湖论剑 2022]take_the_zip_easy

明文攻击,用另外一个压缩包的部分十六进制数据504B0304作为明文

bkcrack.exe -C zipeasy.zip -c dasflow.zip -p plain1.txt -o 30 -x 0 504B0304

得到密钥:

Keys: 2b7d78f3 0ebcabad a069728c

去除加密

bkcrack.exe -C zipeasy.zip -c dasflow.zip -k 2b7d78f3 0ebcabad a069728c -d flow.zip

得到一个流量包,哥斯拉流量

在Http对象列表中发现flag.zip文件,将其导出,可以发现是再eval.php中上传的flag.zip文件

查看eval.php

tcp流追踪一下,找到data数据

再往上面找找哥斯拉加密,在tcp.stream eq 6找到

加密逻辑很简单就是一个带key的异或,再异或一次即可解密

<?php
function encode($D,$K){
    for($i=0;$i<strlen($D);$i++){
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}

$pass='air123';
$payloadName='payload';
$key='d8ea7326e6ec5916';
$data = 'J+5pNzMyNmU2mij7dMD/qHMAa1dTUh6rZrUuY2l7eDVot058H+AZShmyrB3w/OdLFa2oeH/jYdeYr09l6fxhLPMsLeAwg8MkGmC+Nbz1+kYvogF0EFH1p/KFEzIcNBVfDaa946G+ynGJob9hH1+WlZFwyP79y4/cvxxKNVw8xP1OZWE3';
$decode = encode(base64_decode($data),$key);
echo base64_encode(gzdecode($decode));

base64解密得到

用此处的密码打开之前导出的压缩包flag.zip即可得到flag

[SWPU 2019]伟大的侦探

转换一下编码即可得到压缩包的密码

打开压缩包发现很多个跳舞小人,为福尔摩斯小人密码

一一对应解密得到flag{iloveholmesandwllm}

[SWPUCTF 2021 新生赛]原来你也玩原神

得到一个zip,打开后发现没有什么东西,010editor查看文件头,发现不是zip的文件头,是mp3的文件头

mp3stego隐写:https://blog.youkuaiyun.com/qq_53079406/article/details/124680295

没有密码的命令:

MP3StegoDecode.exe -X 1.mp3

得到一个压缩包

打开得到flag

[NISACTF 2022]bilala的二维码

得到一个缺少定位符的二维码,手动补齐

扫码可得一个网站,打开下载图片

binwalk分离出一个压缩包,还是foremost好用,还有一个图片要分离

不知道战队名字,直接暴力破解,选择大小写

打开压缩包,分析音频为摩斯密码,手搓得到

在线解密再加上分辨率得到flag

NSSCTF{M0RS34ND282X231}

[羊城杯 2021]Baby_Forenisc(已解决)

对ie记录进行分析

volatility -f 2.raw --profile=WinXPSP2x86 iehistory

发现可疑文件找到其所在地址

volatility -f 2.raw --profile=WinXPSP2x86 filescan | findstr ssh.txt

下载下来

volatility -f 2.raw --profile=WinXPSP2x86 dumpfiles -Q 0x00000000020bf6a0 -D ./-u

base64解密

找到可疑项目下载看看

找到可疑字符,解密得到

[CISCN 2018]Picture

binwalk得到97E4文件,base64解密

KP,发现文件头很像压缩包,修改文件头

打开压缩包,在注释旁边发现密码

这是一个python2.7里面的报错,密码也就是涂黑的地方,直接百度得到密码:https://blog.youkuaiyun.com/TCatTime/article/details/87854246

UUdecode解码

[GFCTF 2021]pikapikapika

皮卡丘身上都有字符,将其按照顺序连接一下得到  I_want_a_p1ka!

用010editor查看发现flag.wav,有多余的zip数据

binwalk分离得到一个带密码的压缩包

用之前解的字符串I_want_a_p1ka!打开压缩包

用aduacity打开看频谱图

发现一长一短,转换为10看看能不能解码

用脚本提取数据

import wave
f = wave.open("flag.wav","r")
framers_data = f.readframes(f.getnframes()).hex()
bin = ''
# print(f.getsampwidth()) 查看每个采样点有多少个字节
for i in range(0,len(framers_data),4):
    data = framers_data[i:i+4] # 每个采样点有两个字节
    data = data[2:] + data[:2] # data数据小端存储,所以倒序
    print(int(data,16))
    if int(data,16) > 20000:
        bin += "1"
    else:
        bin += "0"
f.close()
with open("result.txt","a+") as f:
    f.write(bin)

010editor转换为字符

base64解码得到一张图片

下载下来得到一张修改了高的图片

用工具爆破高得到

[GDOUCTF 2023]pixelart

根据010中的提示

再加上12x320恰巧等于图片宽度3840.180x12等于图片高度2160

意思是在整张图片中以12x12的方式提取像素

遍历原始图片中以 12 个像素为间隔的区域。对于每个区域,它会获取中心像素的 RGB 值,并将其作为新图像中对应位置像素的颜色

from PIL import Image

im = Image.open('arcaea.png')
pix = im.load()
width = im.size[0]
height = im.size[1]
# 新图像的宽度和高度(每12个像素生成一个新像素)
new_width = width // 12
new_height = height // 12

# 创建一个新的图像对象
new_img = Image.new("RGB", (new_width, new_height))
for x in range(0,width,12):
    for y in range(0,height,12):
        rgb=pix[x, y]
        new_img.putpixel((x//12,y//12),(int(rgb[0]),int(rgb[1]),int(rgb[2])))
new_img.save('new_image.png')
        

得到假的flag,在线查看一下,发现zsteg里面有flag

flag{J3st_2_cats_battling}

[鹤城杯 2021]Misc2

原本以为是宽高问题,最后在通道里面找到编码

HTML解码得到flag{h0w_4bouT_enc0de_4nd_pnG}

[NISACTF 2022]bmpnumber

wbsteg隐写

得到一个二维码

缺少定位符,直接ps补上即可

扫码可得

http://qr61.cn/ogZAdB/qtOvmyN

发现是加密的网站,但是提示weak,也就是弱密码

尝试123456,admin,password

最终得到密码password

得到一段密文

笑死我了,找了半天才找到下载按钮,乐

解不开这个,可恶

突然想起来会不会文档里面还有什么提示,全选发现,有一段空白的,换个颜色找到flag

裂开

[BJDCTF 2020]藏藏藏

发现冗杂数据,手提得到一个压缩包打开压缩包里面的dox,找到一个二维码,解码得到flag

flag{you are the best!}

好好好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值