[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!}
好好好!