CTF之MISC练习二

一、base16解密
题目名称:base64÷4
题目附件
https://adworld.xctf.org.cn/media/task/attachments/c8cb2b557b57475d8ec1ed36e819ac4d.txt
题目writeup:
1.根据题目名称,猜测是base16
2.通过在线base16解密可获得:
https://www.qqxiuzi.cn/bianma/base.php?type=16
CTF之MISC练习二_第1张图片
3.解密脚本:
import base64
s='666C61677B45333342374644384133423834314341393639394544444241323442363041417D'
flag=base64.b16decode(s)
print flag
CTF之MISC练习二_第2张图片
4.最终获得flag:
flag{E33B7FD8A3B841CA9699EDDBA24B60AA}
二、modbus工业协议流量包分析
题目名称:神奇的Modbus
题目描述
寻找flag,提交格式为sctf{xxx}
附件内容
https://adworld.xctf.org.cn/media/task/attachments/22fc3d84e8434aed89cbc0bbd95a07b4.pcapng
基础知识
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式
题目writeup:
1.通过搜索字符串flag关键字,但没有相关搜索
CTF之MISC练习二_第3张图片
2. 搜索sctf关键字,却出现sctf格式
CTF之MISC练习二_第4张图片
结果出来:sctf{Easy_Mdbus},提交有错误
CTF之MISC练习二_第5张图片
根据题目名称Modbus关键字,可能附件内容中流量包中缺少一个o
提交flag:
sctf{Easy_Modbus},则成功提交
三、流量包http协议分析
题目名称:wireshark-1
题目描述
黑客通过wireshark抓到管理员登陆网站的一段流量包(管理员的密码即是答案)。 flag提交形式为flag{XXXX}
附件内容
https://adworld.xctf.org.cn/media/task/attachments/ab8cfea44ced4dd8bd96c7f769ce1309.zip
题目writeup:
1.用wireshark打开流量包,通过搜索http关键协议,并查找post数据包
CTF之MISC练习二_第6张图片
2.追踪流--http流
CTF之MISC练习二_第7张图片
3.可以看到post提交的数据password关键字后门的内容,也就是答案,答案就是flag
CTF之MISC练习二_第8张图片
4.最终flag为:
flag{ffb7567a1d4f4abdffdb54e022f8facd}
四、图片的影写
题目名称:pure_color
题目描述
格式为flag{xxxxxx}
题目附件
https://adworld.xctf.org.cn/media/task/attachments/1457ba9a15f944ae8520e024f72bf7a6.png
题目writeup:
1.通过notepad查看关键字flag并没有任何内容
2.通过题目名称color与颜色有关,关联到有可能是图片影写,通过stegsolve查看图片,按下面的“<”按钮,就得到flag
CTF之MISC练习二_第9张图片
最终flag:
flag{true_steganographers_doesnt_need_any_tools}
五、图片隐写之AES双重解密
题目名称:Aesop_secret
题目附件
https://adworld.xctf.org.cn/media/task/attachments/f732347c6bad47f1ac715cf67a3f4532.zip
题目writeup:
1.下载附件解压得到一个动态图片gif,然后通过图片影写工具 stegsolver查看并没有任何东西
2.通过notepad查看,发现最后面有一串加密的字符串,题目名称为aes,那么该字符串则是aes加密的字符串
CTF之MISC练习二_第10张图片
3.通过在线aes解密,猜测密钥可能为:2019_ISCC或者ISCC,通过测试发现密钥为ISCC则可以解密,但是解密出来的还是AES加密字符串
在线aes解密网站
https://www.sojson.com/encrypt_aes.html
CTF之MISC练习二_第11张图片
4.再次进行第二次解密,则可以获得flag
CTF之MISC练习二_第12张图片
5.最终flag
flag{DugUpADiamondADeepDarkMine}
六、图片隐写之LSB的字符反转
题目名称:倒立屋
题目描述
房屋为什么会倒立!是重力反转了吗?
题目附件
https://adworld.xctf.org.cn/media/task/attachments/0ffa808362f34bf8a2d5bf473c1d455a.zip
题目writeup:
1.下载附件,解压文件,得到一张图片文件,然后通过图片隐写工具 stegsolve的Analyse-Extract Preview查看图片的LSB属性。
CTF之MISC练习二_第13张图片
2.发现有关FLAG的相关联的关键字:IsCc_2019
CTF之MISC练习二_第14张图片
3.直接提交flag{ IsCc_2019}是错误的,根据题目描述,反转关键字,最终flag为:flag{9102_cCsI}
七、坏损图片影写
题目名称
something_in_image
题目附件
https://adworld.xctf.org.cn/media/task/attachments/b2c46758ac3b41eaa457ff8e64d5d17c.zip
题目wirtup:
1.下载附件,通过记事本或者 010editor搜索关键字flag,即可发现flag
CTF之MISC练习二_第15张图片
CTF之MISC练习二_第16张图片
2.最终flag为:
Flag{yc4pl0fvjs2k1t7T}
八、图片隐写之翻转
题目名称:reverseMe
目附件
https://adworld.xctf.org.cn/media/task/attachments/021b62817d7f439aab5338ea63fe1b4b.jpg
题目writeup:
1.通过windows10自带的图片查看工具的翻转功能即可查看flag
CTF之MISC练习二_第17张图片
2.最终flag:
flag{4f7548f93c7bef1dc6a0542cf04e796e}
九、日历影写
题目名称:2017_Dating_in_Singapor
题目描述
01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-0203040310172431-0102030108152229151617-04050604111825181920-0108152229303124171003-261912052028211407-04051213192625
题目附件
https://adworld.xctf.org.cn/media/task/attachments/4f03a908b9bc44e880d9c0371de35366.zip
题目writup:
1.下载附件,发现打开一张日历
CTF之MISC练习二_第18张图片
2.根据描述,发现用分割符号"-"进行分割,有12段( 数字的特征,最小为01,最大为31,一共十二行,恰对应12个月,每个月最多31天。结合今年(2017)日历),那么每段的数字和日历月份有关联,并且两两数字一组,最终简化如下:
01081522291516170310172431-
050607132027262728-
0102030209162330-
02091623020310090910172423-
02010814222930-
0605041118252627-
0203040310172431-
0102030108152229151617-
04050604111825181920-
0108152229303124171003-
261912052028211407-
04051213192625
3.按每一行顺序对应每一个月份的情况下,每一个数字对应日期,再按照顺序在日历上连接成线,就是flag了
CTF之MISC练习二_第19张图片
4.最终flag:
HIT8{CTFFUN}
十、流量包隐藏文件之PDF
题目名称:simple_transfer
题目描述
文件里有flag,找到它
题目writeup:
1.下载附件,用wireshark打开流量文件,搜索flag关键字,并没有发现任何东西
CTF之MISC练习二_第20张图片
2.将该流量文件上传到kali系统中,用binwalk命令查看该文件包含哪些文件,发现有pdf文件包含其中
binwalk  f9809647382a42e5bfb64d7d447b4099_.pcap 
CTF之MISC练习二_第21张图片
3.通过foremost命令分解其包含中的文件,分解出audit.txt和pdf文件夹,进入pdf文件夹中,发现包含了00000662.pdf文件
foremost  f9809647382a42e5bfb64d7d447b4099_.pcap 
CTF之MISC练习二_第22张图片
4 打开pdf文件,里面什么都没有,全黑色背景
CTF之MISC练习二_第23张图片
5. 直接CTRL + A 全选,新建一个txt文件,然后CTRL + V 粘贴,最终 得到flag
HITB{b3d0e380e9c39352c667307d010775ca}
十一、最基础的图片影写
题目名称:Training-Stegano-1
题目描述
这是我能想到的最基础的图片隐写术
题目附件
https://adworld.xctf.org.cn/media/task/attachments/2e5e19744c644912928eddc882f3b0b9.bmp
题目writeup:
1.下载附件图片,通过记事本查看,有个一个密码为:steganoI,猜测为flag
CTF之MISC练习二_第24张图片
2.提交flag{ steganoI },但是不对,再次提交 steganoI ,发现正确,最终flag为:steganoI
十二、BrainFuck语言解密
题目名称:can_has_stdio?
题目附件
https://adworld.xctf.org.cn/media/task/attachments/eb9acff236eb498b9e4d747fb67f86b9.zip
基础知识
BrainFuck语言是极简的一种图灵完备的语言,由Urban Müller在1993年创造,由八个指令组成(如下表)。工作机制与图灵机非常相似,有一条足够长的纸带,初始时纸带上的每一格都是0,有一个数据读写头指向纸带的初始位置,读写头的行为由指令指示。
CTF之MISC练习二_第25张图片
CTF之MISC练习二_第26张图片
brainfuck有两种类型:
1. < < + - > ,  [   ]
2.  0ok! 0ok. 0ok?
题目writeup:
1.下载附件,解压压缩文件,得到一个文件misc50,其中包含以下内容
CTF之MISC练习二_第27张图片
2.看到内容,判断是 brainfuck 代码,,通过在线解密工具进行解密:
http://ctf.ssleye.com/brain.html
CTF之MISC练习二_第28张图片
3.最终flag为:
flag{esolangs_for_fun_and_profit}
十三、压缩包爆破
题目名称:János-the-Ripper
题目附件
https://adworld.xctf.org.cn/media/task/attachments/310085c4315841b1b784b4803ff7e4c1.zip
题目wirteup
1.下载附近,解压文件,得到misc100文件,并通过winhex查看,发现是50,4b,03开头,说明是rar压缩文件,其中还有flag.txt文件。
CTF之MISC练习二_第29张图片
CTF之MISC练习二_第30张图片
2.但是打开.rar文件,提示需要输入密码,且题目名称为 János-the-Ripper,该名为著名的密码爆破工具,需要我们对该.RAR文件进行爆破。
CTF之MISC练习二_第31张图片
通过archpr爆破工具对压缩包进行爆破
CTF之MISC练习二_第32张图片
CTF之MISC练习二_第33张图片
最终flag:
flag{ev3n::y0u::bru7us?!}
十四、影写之十六进制转换
题目名称:Test-flag-please-ignore
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/2f572adcaa5447feb8cc8c50969cd57d.zip
题目writeup:
1.下载附件,解压附件得到misc100,通过notepad查看文件内容
CTF之MISC练习二_第34张图片
2.发现一串字符串:666c61677b68656c6c6f5f776f726c647d,尝试md5 hash值解密发现无法解密,发现该字符串是0到9以及a到f组成,是十六进制形式
3.通过在线十六进制转换成ascii字符
https://www.sojson.com/hexadecimal.html
CTF之MISC练习二_第35张图片
4.最终得到flag为:
flag{hello_world}
十五、影写之有规律的字符串
题目名称:hit-the-core
题目描述
alexctf-2017
题目附件
https://adworld.xctf.org.cn/media/task/attachments/2f572adcaa5447feb8cc8c50969cd57d.zip
题目writeup:
1.下载附件,对其进行解压,发现一个.core文件,该文件为liunx下的崩溃错误生成的文件。通过记事本查看其内容,发现有一些特殊的字符串
CTF之MISC练习二_第36张图片
或者通过kail下的strings命令查看文件中的字符串
CTF之MISC练习二_第37张图片
2.得到可疑的字符串:
cvq Aeqac Ltqaz Eigwi Xobxr Crtui Tzahf Freqc{bnjr Kwgk8 3kgd4 3j85e Pgb_e _rwqr 7fvbm Hjklo 3tews _hmko gooyf 0vbnk 0ii87 Drfgh _n ki wutfb 0ghk9 ro987 k5tfb _hjio uo087 ptfcv}
3.仔细观察,发现前加粗的大写字母连起来为:ALEXCTF,正好为flag提交的格式开头,且每个字母之间有4个字符相隔,那么括号里面按照规律就可以组合连接起来。 4.最终得到flag :
ALEXCTF{K33P_7H3_g00D_w0rk_up}
附录:
data = 'cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}'
flag = ''
for i in range(3, len(data), 5):
    flag += data[i]
print(flag)
CTF之MISC练习二_第38张图片
十六、玩游戏获取flag
题目名称:快乐游戏
题目附件
https://adworld.xctf.org.cn/media/task/attachments/bce2610d3bfa4da8813732deaab7f87f.zip
题目writeup:
1.下载附件,对其解压,打开.exe文件,游戏要求围住猫即可获取flag
CTF之MISC练习二_第39张图片
2.最终得到flag:
UNCTF{c783910550de39816d1de0f103b0ae32}
十七、动态图片分解合并
题目名称:glance-50
题目附件
https://adworld.xctf.org.cn/media/task/attachments/9266eadf353d4ada94ededaeb96d0c50.gif
题目wirteup:
1.下载附件,得到一个很长的一条gif动态图片,通过stegsolve和winhex等工具并没有发现flag
2. 那么这个题大概率就是分离gif的每一帧然后拼接形成图片得到flag
方法一
1.使用convert命令对动态图片flag.gif进行分割
  convert flag.gif  flag.png
CTF之MISC练习二_第40张图片
2.再使用montage命令对分割的图片进行合并
montage flag*.png   -tile x1 -geometry +0+0   flag.png
选项:

-tile是拼接时每行和每列的图片数,这里用x1,就是只一行

-geometry是首选每个图和边框尺寸,我们边框为0,图照原始尺寸即可

CTF之MISC练习二_第41张图片
合成图片为:
CTF之MISC练习二_第42张图片
方法二
1.通过python脚本进行分割gif动态图片
import os
from PIL import Image

def seoaration_gif(gif_file):
png_dir = gif_file[:-4] + '/'
os.mkdir(png_dir)
img = Image.open(gif_file)
try:
while True:
current = img.tell()
img.save(png_dir+str(current)+'.png')
img.seek(current+1)
except:
pass

if __name__=='__main__':
gif_file = 'flag.gif'
seoaration_gif(gif_file)
CTF之MISC练习二_第43张图片
2.再次通过python脚本对分割后的png 静态图片进行合并
# coding=utf-8
# Data: 2021/7/7 16:13
# File : hebin.py
from PIL import Image

path = "C:\\Users\\backlion\\Desktop\\flag\\flag\\"
save_path = 'C:\\Users\\backlion\\Desktop\\flag\\'

im = Image.new('RGBA', (2 * 201, 600)) # 创建新照片

imagefile = [] # 存储所有的图像的名称
width = 0
for i in range(0, 201):
imagefile.append(Image.open(path + str(i) + '.png')) # 遍历,将图像名称存入imagfile

for image in imagefile:
im.paste(image, (width, 0, 2 + width, 600)) # 将图片张贴到另一张图片上
width = width + 2
im.save(save_path + 'result.png')
im.show()

CTF之MISC练习二_第44张图片
方法三:
可直接通过在线动态图片分解工具进行获取
https://tu.sioe.cn/gj/fenjie/
CTF之MISC练习二_第45张图片
最终flag:
TWCTF{Bliss by Charles  0'Rear}
十八、图片影写之像素取反比较
题目名称:a_good_idea
题目附件
https://adworld.xctf.org.cn/media/task/attachments/96378111f32f49d09f691870f1268799.rar
题目witeup:
1.下载附件,对其进行解压,发现一张a_very_good_idea.jpg图片,首先对其进行图片查看,是否含有隐藏文件
CTF之MISC练习二_第46张图片
2.通过binwalk命令对图片文件进行分析,发现包含有压缩文件,且压缩文件内含有2张图片和一个txt文件
binwalk  a_very_good_idea.jpg 
CTF之MISC练习二_第47张图片
3.通过foremost命令对 a_very_good_idea.jpg 图片文件进行分解
foremost  a_very_good_idea.jpg 
CTF之MISC练习二_第48张图片
4.打开其中的hint.txt文件,发现有一段字符串, try to find the secret of pixels,表示:试着找到像素的秘密
CTF之MISC练习二_第49张图片
CTF之MISC练习二_第50张图片
5.打开File—>Open—>图片,这里先打开a_very_good_idea.jpg图片
CTF之MISC练习二_第51张图片
6.通过analyse-image combiner 打开图片to.png
CTF之MISC练习二_第52张图片
CTF之MISC练习二_第53张图片
7.利用stegsolve将两张图片进行combine,得到像素相减的图,按左右键转换色道,会跳出二维码
CTF之MISC练习二_第54张图片
8.通过微信扫描二维,最终得到flag:
NCTF{m1sc_1s_very_funny!!!}
十九、
题目名称:
题目附件:
题目writeup:
1.下载附件,解压,发现一张斑马条形码的图片文件,既然有条形码,这里 利用条形码在线阅读得到其内容: https://online-barcode-reader.inliteresearch.com/
CTF之MISC练习二_第55张图片
CTF之MISC练习二_第56张图片
最终得到flag:
flag{TENSHINE}
题目名称:easycap
题目描述:你能从截取的数据包中得到flag吗?
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/d5ba8f87969145059170a222f01e7883.pcap
题目writeup:
下载附件,并解压附件,用wireshark打开流量包文件,通过追踪流-TCP流,可看到falg信息
CTF之MISC练习二_第57张图片
这里注意提交flag形式,不是flag{}和FLAG{}
因此最终flag为:
FLAG:385b87afc8671dee07550290d16a8071
题目名称:stage1
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/3600c13125fe4443aeef3c55b9c1357b.png
基础知识:
常见的文件头和文件尾:
JPEG (jpg),                          文件头:FFD8FF                        文件尾:FF D9               
PNG (png),                          文件头:89504E47                      文件尾:AE 42 60 82
GIF (gif),                             文件头:47494638                      文件尾:00 3B                                                                 
ZIP Archive (zip),                     文件头:504B0304                      文件尾:50 4B
TIFF (tif),                              文件头:49492A00                      文件尾:
Windows Bitmap (bmp),         文件头:424D                         文件尾:
CAD (dwg),                           文件头:41433130                      文件尾:
Adobe Photoshop (psd),          文件头:38425053                      文件尾:
Rich Text Format (rtf),             文件头:7B5C727466                      文件尾:
XML (xml),                              文件头:3C3F786D6C                     文件尾:
HTML (html),                           文件头:68746D6C3E
Email [thorough only] (eml),     文件头:44656C69766572792D646174653A
Outlook Express (dbx),            文件头:CFAD12FEC5FD746F
Outlook (pst),                         文件头:2142444E
MS Word/Excel (xls.or.doc),      文件头:D0CF11E0
MS Access (mdb),                    文件头:5374616E64617264204A
WordPerfect (wpd),                  文件头:FF575043
Adobe Acrobat (pdf),               文件头:255044462D312E
Quicken (qdf),                         文件头:AC9EBD8F
Windows Password (pwl),         文件头:E3828596
RAR Archive (rar),                    文件头:52617221
Wave (wav),                            文件头:57415645
AVI (avi),                                 文件头:41564920
Real Audio (ram),                     文件头:2E7261FD
Real Media (rm),                       文件头:2E524D46
MPEG (mpg),                           文件头:000001BA
MPEG (mpg),                           文件头:000001B3
Quicktime (mov),                     文件头:6D6F6F76
Windows Media (asf),               文件头:3026B2758E66CF11
MIDI (mid),                              文件头:4D546864
pyc                                          文件头:03f30d0a
题目writeup:
下载附件,解压得到一张图片,通过图片工具stegsolve打开图片,查看图片通道,可发现二维码
CTF之MISC练习二_第58张图片
通过二维码扫描工具QR Research扫描二维码,可获得一串十六进制的字符
将其十六进制字符复制并保存为test1.文件
通过winhex工具打开test1.pyc文件,然后对文件进行字符转换,转换文件---十六进制ASCII转换,并确定保存
CTF之MISC练习二_第59张图片
CTF之MISC练习二_第60张图片
并通过在线pyc反编译对pyc文件进行反编译为python文件
https://tool.lu/pyc/
CTF之MISC练习二_第61张图片
通过美化python代码,并稍微修改,得到获得flag的python文件
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
def flag():
str = [65, 108, 112, 104, 97, 76, 97, 98]
flag = ""
for i in str:
flag += chr(i)
print flag
flag()
CTF之MISC练习二_第62张图片
最终获得flag:
AlphaLab
题目名称:Hear-with-your-Eyes
题目描述:
用眼睛听这段音频
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/bf87ed29ac5a46d0aa433880dac5e6d8.gz
题目writeup:
下载附件,通过linux命令tar对其附件.gz文件进行解压,得到一个音频文件soud.wav
tar  zxvf flag.gz
CTF之MISC练习二_第63张图片
通过音频分析工具audacity进行分析,然后选择步频谱图,可得到falg
CTF之MISC练习二_第64张图片
显示为:
flag:e5353bb7b57578bd4da1c898a8e2d767
注意提交flag格式,试了几次,最终flag为:
e5353bb7b57578bd4da1c898a8e2d767
题目名称:What-is-this
题目描述:找到FLAG
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/e66ea8344f034964ba0b3cb9879996ff.gz
题目writeup:
方法一:
下载附件,并通过linux 命令对其附件.gz进行解压,得到2张图片
tar  zxvf  e66ea8344f034964ba0b3cb9879996ff.gz 
既然是2张图片,于是猜测可能是2张图片的合并或者比较。 通过隐写图片工具stegsolve工具打开pic1.jpg
CTF之MISC练习二_第65张图片
然后选择image  comibiner工具打开另一张图片pic2.png
CTF之MISC练习二_第66张图片
CTF之MISC练习二_第67张图片\
对2张图片进行合并,合并后可获得flag
CTF之MISC练习二_第68张图片
方法二:
得到两张相似的图片, 第一反应是两张图片的合并,于是使用kali下的compare命令进行合并,然后得到FLAG
compare pic1.jpg pic2.jpg -compose src flag.jpg
CTF之MISC练习二_第69张图片
CTF之MISC练习二_第70张图片
最终得到flag:
AZADI  TOWER
题目名称:red_green
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/2ec5da20345342909d2336aa7418afed.png
题目writeup:
方法一:
下载附件,并获得一张图片,该图片由绿色和红色构成。分别将红色和绿色视为0和1.
下面通过stegsolve图片影写工具的data extract功能进行分析
CTF之MISC练习二_第71张图片
CTF之MISC练习二_第72张图片
勾选RED的0,然后保存flag.jpg
CTF之MISC练习二_第73张图片
可以获得flag信息:
CTF之MISC练习二_第74张图片
方法二:
其中的红色和绿色视为0 和 1,再将最后得到的 01序列 转存为图片,下面为python代码:
# coding=utf8

from PIL import Image
import bitstring

im = Image.open('flag.png')
width = im.size[0]
height = im.size[1]
pim = im.load() # 读取图片的像素信息
bin_result = ''
for h in range(height):
for w in range(width):
if pim[w,h][0] == 255: # 判断是否是红色(R,G,B)[0]表示第一通道
bin_result += '1'
else:
bin_result += '0'

# print bitstring.BitArray(bin=bin_result).bytes.encode('hex')
with open('result.jpg','wb') as f:
f.write(bitstring.BitArray(bin=bin_result).bytes)
CTF之MISC练习二_第75张图片
CTF之MISC练习二_第76张图片
最终得到flag:
flag{134699ac9d6ac98b}
题目名称:normal_png
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/7171426a9b4646aba1db92b1fbc083f5.png
题目writeup:
下载附件,得到一张png图片,通过查看图片隐写,并没有发现可利用的信息。联想到可能图片的高度变小,导致有一部分图片显示不完整。
那么这里我们调整图片的高度,这里通过填充数据形式将03,6B,修改为04,6B,并保存图片
CTF之MISC练习二_第77张图片
CTF之MISC练习二_第78张图片
CTF之MISC练习二_第79张图片
CTF之MISC练习二_第80张图片
最终flag为:
flag{B8B68DD7007B1E406F3DF624440D31E0}
题目名称:就在其中
题目描述:
格式为flag{xxxx}
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/7cd17d910acf4ac8b563aa5caad18717.zip
题目writeup:
首先下载附件,解压附件,得到一个 Misc-03.pcapng 流量文件。通过binwalk文件查看文件包含的文件,发现包含zip,pdf,jpg等文件,其中zip文件中含有key.txt文件
binwalk  Misc-03.pcapng 
CTF之MISC练习二_第81张图片
通过foremost命令对其文件进行分离
CTF之MISC练习二_第82张图片
发现分离出来的图片文件没有和flag有关联
CTF之MISC练习二_第83张图片
并且pdf也没有和flag有关联
CTF之MISC练习二_第84张图片
解压出00000047.zip文件,得到一个key.txt文件,并打开该文件,发现是乱码,可能是被加密了。猜测是需要对其解密
CTF之MISC练习二_第85张图片
通过wireshark对 Misc-03.pcapng 进行分析,搜索关键字:flag。并没有发现和flag有关的信息
CTF之MISC练习二_第86张图片
再次搜索关键字key,并发现数据包中含有"PRIVATE key"
CTF之MISC练习二_第87张图片
通过追踪TCP流,发现是ssh的私钥rsa的key的内容
CTF之MISC练习二_第88张图片
将其内容保存为rsa.key
CTF之MISC练习二_第89张图片
通过openssl命令对其加密的密文key.txt进行加载私钥进行破解,最终获得明文
openssl rsautl -decrypt -in key.txt -inkey rsa.key -out flag.txt
查看flag.txt
cat  flag.txt
最终获得flag为:
flag{haPPy_Use_0penSsI}
题目名称:再见李华
题目描述:
假如你是李华(LiHua),收到乔帮主一封密信,没有任何特殊字符,请输入密码,不少于1000个字。同学,记得署名哦
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/7ab3e456b35945a4afed08050cd8859e.zip
题目writeup:
下载附件,对附件进行解压,发现一张图片,图片上显示不完整的MD5值,并没有可利用点
CTF之MISC练习二_第90张图片
通过binwalk命令对其文件查看包含的内容,发现其中包含了jpeg和zip文件,且zip文件含有key.txt文件
使用foremost命令对mail2LiHua.jpg进行分离文件,发现00000037.zip文件可利用
CTF之MISC练习二_第91张图片
对其 00000037.zip文件就解压缩发现需要密码。
CTF之MISC练习二_第92张图片
根据题目描述:
假如你是李华(LiHua),收到乔帮主一封密信,没有任何特殊字符,请输入密码, 不少于 1000 个字。同学,记得署名哦~
可以推测出:
不少于1000个字,暗含密码为不少于二进制1000的密码位数(转换成十六进制就是至少需要8位以上的密码数)
记得署名为 李华(LiHua), 意思是密码中后面5位数是Lihua
使用Advanced ZIP Password Recovery_4.0进行破解。 密码为15CCLiHua
以下使用archpr的掩码攻击类型进行破解
CTF之MISC练习二_第93张图片
CTF之MISC练习二_第94张图片
最终flag:
Stay hungry, Stay foolish.
题目名称:embarrass
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/54dcee33c07745f39f43a094a1b61dcf.zip
题目writeup:
下载附件,解压附件得到一个流量文件misc_02.pcapng文件
使用linux命令strings直接搜索关键字,可得到flag
strings misc_02.pcapng | grep flag
CTF之MISC练习二_第95张图片
或者用wireshark软件打开流量包,直接搜索关键字flag,也可以得到flag
CTF之MISC练习二_第96张图片
最终得到flag:
flag{Good_b0y_W3ll_Done}
题目名称:MISCall
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/d02f31b893164d56b7a8e5edb47d9be5
题目writeup:
下载附件,通过binwalk命令查看包含文件,可以看到文件的类型为bzip2
binwalk  flag
CTF之MISC练习二_第97张图片
将flag附件文件重新命名flag.tar.bz2
mv  flag    flag.tar.bz2
对flag.tar.bz2进行解压
tar -xjvf  flag.tar.bz2
CTF之MISC练习二_第98张图片
查看解压文件夹ctf的文件内容,其中包含了flag.txt,和.git文件内容
cd ctf
ls  -al
CTF之MISC练习二_第99张图片
通过cat命令查看flag.txt,提交里面的内容,但是错误,并不是flag,那么.git文件有可能和flag有关
Nothing to see here, moving along...
通过git stash list 命令查看文件修改情况,发现flag.txt和s.py都有被修改过
git stash list
需要对.git文件进行还原,在还原前需要将已被修改过的flag.txt文件删除,然后使用git stash apply命令进行还原,还原后生成了新的文件s.py和flag.txt
rm flag.txt 
git stash apply
CTF之MISC练习二_第100张图片
再次通过cat命令查看flag.txt内容,发现内容很大一一串,并不是flag
cat flag.txt
CTF之MISC练习二_第101张图片
并又通过cat命令查看s.py内容,发现是与flag有关且和flag.txt有关联,可生成flag
cat s.py
运行s.py脚本,可获得flag内容
python s.py
最终得到flag:
NCN4dd992213ae6b76f27d7340f0dde1222888df4d3
题目名称:Get-the-key.txt
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/256cb07f5dbd493f81ad5b199f2b248a.zip
题目writeup:
下载附近,并对附件进行解压,得到解压后的文件forensic100,通过linux  file命令查看文件系统属性,发现是一个linux 的ext2系统文件
file  forensic100
通过mount命令对linux系统文件forensic100进行挂载到/opt/flag目录下
mkdir  /opt/flag
mount -o loop forensic100 /tmp/forensic100
根据题目名称可知,我们要找key.txt文件,通过gresp  -r  “key.txt”命令对当前目录下的所有文件进行关键字“key.txt"搜索包含存在的文件,这里可以看到是1文件存在包含flag.txt
cd  /opt/flag
grep  -r  'key.txt‘
CTF之MISC练习二_第102张图片
再次通过file命令查看1的文件属性,发现该文件是gzip文件
通过gunzip<1查看文件内容,可获得flag
gunzip < 1
最终得到falg:
SECCON{@]NL7n+-s75FrET]vU=7Z}
题目名称:Reverse-it
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/0da9641b7aad4efb8f7eb45f47eaebb2
题目writeup:
下载附件,解压附件,得到一个flag文件,然后通过winhex查看flag文件,发现末尾是FF 8F FF,这个就是jpg文件格式的头部,只不过是倒叙过来。根据题目名称recerse-it,要还原文件,那就要将文件 的内容进行反向。
CTF之MISC练习二_第103张图片
通过xxd对文件进行十六进制查看
xxd -p  flag
CTF之MISC练习二_第104张图片
通过xxd命令先将二进制内容进行反向,并将反向后的字符以二进制的形式输出,然后发现是一个JPEG图片,此时flag是翻转的。
xxd -p  flag | tr -d '\n' | rev | xxd -r -p > flags
files  flags
通过convert命令对图片文件进行翻转
mv  flags  flags.jpg
convert -flop flags.jpg   flag.jpg
CTF之MISC练习二_第105张图片
最终得到flag:
SECCON{6in_tex7}
题目名称:打野
题目描述:
菜你了解CTF圈的实时动态么?flag格式qwxf{}
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/82a98710753740d6b0de1ef17d21c8be.rar
基础知识:
LSB(英文 least significant bit)即最低有效位。LSB加密是信息隐藏中最基本的方法。通常来说LSB加密用在无损压缩的数据格式文件中,例如图像中的bmp格式和音频的wav格式。对于图像文件LSB的特征很明显,通常将信息隐藏在某一个颜色通道中。
题目writeup:
下载附件,对附件进行解压得到一张flag.bmp的图片,通过命令strings对qwxf关键字进行搜索,但是没有任何信息,且通过stegsolve也没有发现任何有flag相关的信息
通过zsteg对bmp或者png图片进行隐写查看,这里主要查看LSB隐写的信息
CTF之MISC练习二_第106张图片
最终发现flag为:
qwxf{you_say_chick_beautiful?}
题目名称:我们的秘密是绿色的
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/bb9a4b47c82b4a659ce492cd903df03b.zip
题目writeup:
下载附件,解压附件得到一张flag.jpg图片,图片中尤其比较明显的区域为日历的绿色字体(根据题目名称我们的秘密是绿色,那么密码和绿色字体有关,这是一个处猜想)
CTF之MISC练习二_第107张图片
通过stegsolve查看图片隐写以及搜索关键字flag,并没有发现任何有关的flag,
根据题目名称我们的秘密是green,于是想到使用OurSecret这个工具,然后解密还缺一个密码,正好就是上面绿色的部分数字组合,最终测试密码为:0405111218192526可成功解压出压缩包
,这里我们将try.zip文件保存。
CTF之MISC练习二_第108张图片
打开压缩包try.zip提示需要输入密码,并查看try.zip的压缩包信息,可以看到提示“你知道coffee的生日多少么”这条信息告诉我们,压缩包密码和生日号码数字有关。
CTF之MISC练习二_第109张图片
通过ziperello 对zip进行爆破,这里的爆破规则为纯数字号码,生日号码密码长度为1到8位。
CTF之MISC练习二_第110张图片
得到密码,解压获得两个文件为flag.zip和readme.txt
CTF之MISC练习二_第111张图片
这里可以看到flag.zip压缩包中含有一个readme.txt以及同目录下也有一个readme.txt,那么很有可能和压缩包明文攻击有关。同时可以看到readme.txt的CRC32校验值为:
BA59D790
CTF之MISC练习二_第112张图片
然后我们将通过winrar压缩程序对readme.txt压缩成readme.zip,并查看 readme.txt的CRC32校验值也为 BA59D790
CTF之MISC练习二_第113张图片
通过ARCHPR对flag.zip压缩包进行明文攻击,最终得到解压密码为 Y29mZmVl
CTF之MISC练习二_第114张图片
通过输入解压密码,得到2个文件分别为flag.zip以及reame.txt
CTF之MISC练习二_第115张图片
打开flag.zip提示需要输入密码
并且,这次的flag.zip里面只有flag.txt
CTF之MISC练习二_第116张图片
通过 通过ARCHPR对flag.zip压缩包进行密码爆破,发现爆破失败。
通过winhex打开flag.zip压缩包,发现下面有特殊的伪加密方式:
第一段50 4B 是压缩源文件数据区的头文件标记,它对应的红色框柱的 00 08 并不影响加密属性。
第二段50 4B 是压缩源文件目录区 ,它对应的 01 09 影响加密属性,当数字为奇数是为加密,为偶数时不加密,因此这将01改为00(一般在第二段50 4B   ...14 00后面修改为00)
CTF之MISC练习二_第117张图片
这里将01修改为00,保存即可解压出flag.zip。
CTF之MISC练习二_第118张图片
CTF之MISC练习二_第119张图片
或者通过zipceno0p.jar对其进行伪加密恢复。
java  -jar  ZipCen0p.jar  r  flag.zip
CTF之MISC练习二_第120张图片
解压出flag.zip文件后,得到一个flag.txt文件,打开该文件,看到一串字符串:qddpqwnpcplen%prqwn_{_zz*d@gq}
CTF之MISC练习二_第121张图片

这个很明显了看起来像栅栏加密,下面是CTFcrack工具对其直接解密得到解密:qwlr{ddneq_@dpnwzgpc%nzqqpp_*}

CTF之MISC练习二_第122张图片
但是并不是flag,看起来像凯撒加密,又再次通过 CTFcrack工具对其直接解密
CTF之MISC练习二_第123张图片
最终得到flag:
flag{ssctf_@seclover%coffee_*}
题目名称:Become_a_Rockstar
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/7a7a705cb5874292a47461c7ed0cc0c1.zip
题目writeup:
下载附件,打开是一段字符串,且看到题目名称为“Rockstar”有可能和flag有关,于是搜索这个关键字,显示是一门摇滚明星编程语言(Rockstar),这里通过下面脚本将其转换成pytho语言
https://github.com/yyyyyyyan/rockstar-py
python3  rockstarpy   -i  Become_a_Rockstar.rock   -o  flag.py
通过执行转换后的python,即可获得flag
CTF之MISC练习二_第124张图片
最终flag为:
NCTF{youarnicerockstar}
题目名称:小小的PDF
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/a4f37ec070974eadab9b96abd5ddffed.pdf
题目writeup:
下载附件,解压附件得到一张flag.pdf文件,然后通过binwalk对其进行文件包含分析,发现里面包含了一张PDF文件以及3张JPEG文件
CTF之MISC练习二_第125张图片
通过foemost命令对flag.pdf进行分离,得到三张图片和一张PDF文件
CTF之MISC练习二_第126张图片
查看到00000160.jpg文件,发现是flag内容
CTF之MISC练习二_第127张图片
最终flag为:
SYC{so_so_easy}
题目名称:Cephalopod
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/434c8c0ba659476caa9635b97f95600c.pcap
题目writeup:
方法一:
首先下载附件,得到一个流量文件flag.pcap,并搜索关键字flag,可以看到流量文件中包含了一张图片flag.png,可能这种图片与flag有关
CTF之MISC练习二_第128张图片
在kali下使用命令foremost提取不了图片,这里可以使用tcpxtract进行分离流量包中的图片
  apt-get install tcpxtract
CTF之MISC练习二_第129张图片
使用tcpxtract  -f  进行分解流量包中的图片,可以分解出2张图片
tcpxtract  -f  flag.pcap 
查看2张图片,可以看到在0000000.png图片中包含flag
方法二:
通过wrireshark打开流量包flag.pcap,搜索关键字flag,可以看到包含了flag.png,这可能与flag有关
CTF之MISC练习二_第130张图片
然后对其进行追踪流--tcp流
CTF之MISC练习二_第131张图片
再次搜索关键字flag,发现也有很多包含flag.png的图片,这些都不是flag.png的真实数据
CTF之MISC练习二_第132张图片
然后进行数据流2 跳转,并查看,发现有包含png图片的内容,且开头为IHDR
CTF之MISC练习二_第133张图片
这里将以原始数据,保存为flag.png
CTF之MISC练习二_第134张图片
通过winhex打开flag.png,删除89504E前的所有十六进制数据,然后保存图片
CTF之MISC练习二_第135张图片
CTF之MISC练习二_第136张图片

查看保存后的图片,发现内容包含了flag
CTF之MISC练习二_第137张图片
最终flag为:
HITB{95700d8aefdc1648b90a92f3a8460a2c}
题目名称:Erik-Baleog-and-Olaf
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/a020007e78914bb1a7a17cbf68e2c5d1.zip
题目writeup:
方法一:
使用binwalk命令查看文件包含的内容,其中可以看到包含了一张png图片
binwalk stego100
CTF之MISC练习二_第138张图片
并使用foremost命令分离文件
 foremost  stego100 
CTF之MISC练习二_第139张图片
获得了一张图片000000000.png
CTF之MISC练习二_第140张图片
通过stegsolve工具查看通道,其中图片中包含残缺的二维码。
CTF之MISC练习二_第141张图片
通过ps进行修复,获得一张二维图片
通过QR Research二维码工具扫描,获得flag
CTF之MISC练习二_第142张图片
方法二:
通过strings 命令查看文件的属性,其中属性中包含了一个URL 图片地址。
CTF之MISC练习二_第143张图片
CTF之MISC练习二_第144张图片
http://i.imgur.com/22kUrzm.png(https://github.com/jesstess/tinyctf/blob/master/erik/data/22kUrzm.png)
这种图片和原始的文件,可能存在一定的关联,这里联想到需要进行2个文件的对比
CTF之MISC练习二_第145张图片
使用compare命令进行2个文件对比,并输出一张新的图片文件
compare stego100 22kUrzm.png -compose src flag.png
CTF之MISC练习二_第146张图片
通过QR reswarch二维码扫描工具扫描出flag.png图片,可获得flag
CTF之MISC练习二_第147张图片
最终flag为:
flag{#justdiffit}
题目名称:labour
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/6bf99baed0d84d2c8c28b6b2f08c34a6
基础知识:

1.GPX(GPS Exchange Format, GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式。

2.它可以用来描述路点、轨迹、路程。这个格式是免费的,可以在不需要付任何许可费用的前提下使用。它的标签保存位置,海拔和时间,可以用来在不同的GPS设备和软件之间交换数据。如查看轨迹、在照片的exif数据中嵌入地理数据

题目writeup:
1.用记事本打开文件,发现该文件的格式为gpx,通过百度gpx文件格式。发现是一种gps交换数据的地图格式文件
CTF之MISC练习二_第148张图片
这里可以通过在线网址解析gpx格式文件出地图。
https://www.gpsvisualizer.com/map_input
CTF之MISC练习二_第149张图片

放大发现每个点都有序号,一共17个点,然后每个点都对应一个国家的名称,按照顺序记录下来

CTF之MISC练习二_第150张图片
统计出每个坐标点对应的国家城市名称。
WP01-A - Bangladesh
WP02-B - India
WP03-C - Turkmenistan
WP04-D - Sudan
WP05-E - Chad
WP06-F - Thailand
WP07-G - France
WP08-H - Malesia
WP09-I - Afganistan
WP10-J - Pakistan
WP11-K - Turkey
WP12-L - Hungary
WP13-M - Egypt
WP14-N - Haiti
WP15-O - Angola
WP16-P - China
WP17-Q - Kazaksztan

发现前面7国家城市的首字母组合BITSCTF就是flag提交的格式首字母。那么组合构成flag:BITSCTF{MAPTHEHACK},提交发现错误

再次查看文件中有一段注释是:Use appropriate brackets and underscores to separate words if you succeed(如果成功,请使用适当的括号和下划线分隔字符)

CTF之MISC练习二_第151张图片

那么重新用括号和下划线分割符号组合flag.

最终flag为:

BITSCTF{MAP_THE_HACK}

题目名称:misc_pic_again
题目描述:
flag = `hctf{[a-zA-Z0-9~]*}`
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/719af25af2ca4707972c6ae57060238e.png
题目writeup:
方法一:
下载附件,获得一张图片,通过stegsolve图片隐写工具查看图片,尝试通道查看并有发现和flag有关的,再次 尝试查看图片LSB隐写(analyse----DATA Extract)对RGB和LSB数据分析。
CTF之MISC练习二_第152张图片
这里将红蓝绿设置为0,并进行提取查看,发现开头为pk,这个是zip压缩头的格式。
CTF之MISC练习二_第153张图片
将结果保存为flag.zip文件
CTF之MISC练习二_第154张图片
对其flag.zip解压缩,获得一个1的文件
CTF之MISC练习二_第155张图片
通过winhex或者记事本打开,根据题目描述,flag格式为hctf开头,搜索关键字"hctf"可以看到文件中有包含flag
CTF之MISC练习二_第156张图片
CTF之MISC练习二_第157张图片
方法二:
通过zsteg图片影写工具对图片进行分析,发现其中隐藏了一个zip文件
zsteg   flag.png
CTF之MISC练习二_第158张图片
使用zsteg  -e   b1,rgb,lsb,xy 对flag.png LSB隐写的压缩文件进行提取,保存为flag.zip
zsteg -e b1,rgb,lsb,xy  flag.png > flag.zip
对保存后的flag.zip进行解压缩,解压缩后得到一个文件1,且通过strings命令对其搜索关键字hctf,可获得flag
strings  1 |grep  hctf
CTF之MISC练习二_第159张图片
最终得到flag:
hctf{scxdc3tok3yb0ard4g41n~~~}
题目名称:low
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/15a04eedcabe43978bb692c21a0f1b52.rar
题目writeup:
下载附件,得到这一张low.bmp图片,通过stegsolve打开,分析lsb隐写,无果,发现通道有问题
CTF之MISC练习二_第160张图片
这里直接通过脚本生成LSB隐写显示隐藏图片:
import PIL.Image as Image
img = Image.open('low.bmp')
img_tmp = img.copy()
pix = img_tmp.load()
width,height = img_tmp.size
for w in range(width):
for h in range(height):
if pix[w,h]&1 == 0:
pix[w,h] = 0
else:
pix[w,h] = 255
img_tmp.show()
CTF之MISC练习二_第161张图片
将显示图片保存为flag.jpg
通过QR Rearch二维码扫描工具可获得flag内容
最终得到flag:
flag{139711e8e9ed545e}
题目名称:适合作为桌面
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/1573d940d9bb47a083da6db70ffbffe0.rar
题目writeup:
下载附件,并解压附件,得到一张1.png图片,通过stegsolve工具打开图片,并查看通道,发现在red plane 1通道是显示一张二维码
将二维码保存为flag.png图片
通过二维码工具QE Reswarch对flag.png进行扫描,获得一串十六进制的字符串
03F30D0A79CB05586300000000000000000100000040000000730D0000006400008400005A000064010053280200000063000000000300000016000000430000007378000000640100640200640300640400640500640600640700640300640800640900640A00640600640B00640A00640700640800640C00640C00640D00640E00640900640F006716007D00006410007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100715500577C010047486400005328110000004E6966000000696C00000069610000006967000000697B000000693300000069380000006935000000693700000069300000006932000000693400000069310000006965000000697D000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000312E7079520300000001000000730A0000000001480106010D0114014E280100000052030000002800000000280000000028000000007304000000312E707974080000003C6D6F64756C653E010000007300000000
将十六进制字符串保存到新建的flag文件中
通过winhex打开flag文件,然后转换文件---十六进制ascii-->二进制
转换成功后,发现文件中包含有1.py和1.pyt关键字,该文件为pyc格式的文件
因此将其保存为flag.pyc
这里通过在线工具将flag.pyc文件进行反编译成py文件
https://tool.lu/pyc/
或者通过uncompyle6将flag.pyc反编译成py文件
uncompyle6  flag.pyc  >flag.py
运行反编译后的python文件,可获得flag(注意需要在末尾添加falg()以调用函数)
def flag():
str = [102,108,97,103,123,51,56,97,53,55,48,51,50,48,56,53,52,52,49,101,55,125]
flag = ''
for i in str:
flag += chr(i)
print flag
flag()
              
              
                
                
                
                
最终flag为:
flag{38a57032085441e7}
题目名称:心仪的公司
题目描述:
小黑在拿到webshell后,马上就获得了自己心仪公司的照片
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/31cc86285680418f8a1fb45951d25552.rar
题目writeup:
strings  webshell.pcapng  | grep  {
根据题目描述:小黑在拿到webshell后,马上就获得了自己心仪公司的照片。猜测是找http包,然后分析包含照片的信息。
用wireshark打开包,过滤出http协议的包,不一会就能找到图片中的flag
题目名称:misc1
题目描述:d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd
题目writeup:
根据题目描述,发现是一串十六进制字符,直接转换成ascii发现不行。 而且字符刚好是134位。可以将其分为两个一组
payload = "d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd"
s = ""
for i in range(0,len(payload),2):
s += "0x"
s += payload[i:i+2]
s += ","

print s
得到2个一组的十六进制:
0xd4,0xe8,0xe1,0xf4,0xa0,0xf7,0xe1,0xf3,0xa0,0xe6,0xe1,0xf3,0xf4,0xa1,0xa0,0xd4,0xe8,0xe5,0xa0,0xe6,0xec,0xe1,0xe7,0xa0,0xe9,0xf3,0xba,0xa0,0xc4,0xc4,0xc3,0xd4,0xc6,0xfb,0xb9,0xe1,0xe6,0xb3,0xe3,0xb9,0xe4,0xb3,0xb7,0xb7,0xe2,0xb6,0xb1,0xe4,0xb2,0xb6,0xb9,0xe2,0xb1,0xb1,0xb3,0xb3,0xb7,0xe6,0xb3,0xb3,0xb0,0xe3,0xb9,0xb3,0xb5,0xe6,0xfd,
0xd4此类的都是大于127的所以很可能是移位,而且要用减的,因为这里的数字都比127来的大。
# encoding:utf-8
s = [0xd4,0xe8,0xe1,0xf4,0xa0,0xf7,0xe1,0xf3,0xa0,0xe6,0xe1,0xf3,0xf4,0xa1,0xa0,0xd4,0xe8,0xe5,0xa0,0xe6,0xec,0xe1,0xe7,0xa0,0xe9,0xf3,0xba,0xa0,0xc4,0xc4,0xc3,0xd4,0xc6,0xfb,0xb9,0xe1,0xe6,0xb3,0xe3,0xb9,0xe4,0xb3,0xb7,0xb7,0xe2,0xb6,0xb1,0xe4,0xb2,0xb6,0xb9,0xe2,0xb1,0xb1,0xb3,0xb3,0xb7,0xe6,0xb3,0xb3,0xb0,0xe3,0xb9,0xb3,0xb5,0xe6,0xfd]
for i in range(135):
flag = ""
for j in range(len(s)):
flag += chr(s[j]-i)
print("第%s移位:%s")%(i,flag)
或者
使用下面脚本将其每两个分组十六进制,转成十进制后-128(偏移量为128),再转成ascii码得到flag
import re
s = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd'
num = re.findall('\w{2}' ,s)
flag = ''
for i in num:
ch = chr(int(i,16)-128)
flag += ch
print(flag)

          
          
            
            
            
            
最终得到flag:
DDCTF{9af3c9d377b61d269b11337f330c935f}
数字像素隐写
题目名称:Miscellaneous-200
题目描述:[Flag在这里!](flag.txt)
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/62f4ea780ecf4e6bbef5f40d674ec073.txt
题目writeup:
方法一:
下载附件得到一个flag.txt文件,里面有61366行,每行包含三个逗号分隔值的元组,大部分为  255,255,255  。这看起来像具有给定 RGB 值的图像。
于是可推断以此txt文件可绘制一幅图片
图像的尺寸可能是:1、2、61、122、503、1006、30683、61366。最可能的图像大小是 122×503px 或 503×112px。
那么图像的宽度和高度为:
122*503或者503*122
通过python脚本将其文本(像素点)转换成图片:
# coding=utf8
from PIL import Image
x = 503
y = 122
img = Image.new('RGB',(503,122),"black")
f = open('flag.txt','r')
pix=[]
for i in range(61366):
a = f.readline()
a = a.replace('\n','')
pix.append(a)

#print pix
im = []
for i in range(len(pix)):
im.append(pix[i].split(','))

#print im
for i in range(x):#x = 503
for j in range(y):#y = 122
pix = (int(im[i*122+j][0]),int(im[i*122+j][1]),int(im[i*122+j][2]))
img.putpixel((i,j),pix)#写某个像素位置的值

img.show()
方法二:
这里我们可以将文本内容转换成ppm格式,PPM格式详见下面链接:
https://blog.csdn.net/kinghzkingkkk/article/details/70226214
转换后的flag.ppm格式说明:
            
            
              
              
              
              
第一行:p3表示文件格式类型为ascii
第二行:122  503  表示图像的宽度和高度用ascii表示
第三行:最大像素值为255字节表示,范围为0-255
第4行开始到6139行表示图像数据:
按RGB的顺序排列,RGB中间用空格隔开,图片每一行用回车隔开。
https://github.com/g0tmk/write-ups/blob/master/defkthon-ctf/misc-200/flag.ppm
我们通过命令 convert 将falg.ppm转换为 PNG,然后翻转 + 旋转》
convert -flip -rotate 90 flag.ppm flag.png
             
             
              
              
              
              
可获得图片,图片中含有flag内容
                
                
                 
                 
                 
                 
最终得到flag:
flag{ youc@n'tseeme }
端口隐写
题目名称:Hidden-Message
题目描述:
藏的什么信息?
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/8868f595665740159650d6e654aadc93.pcap
题目writeup:
下载附件,得到一个流量数据包flag.pcap,此数据包用wireshark打开发现都是UDP协议,其中源端口末尾号一直变化(发现只有红框位置0和1不断变换 ),考虑到为二进制,结合kali的tshark(wireshark命令版)和perl语法,将二进制数据
转化之后的到flag
tshark -r  flag.pcap -Tfields -e udp.srcport #打印数据包UDP协议源端口
tshark -r  flag.pcap -Tfields -e udp.srcport | while read port; do echo -n ${port: -1}; done | tr 01 10 | perl -lpe '$_=pack"B*",$_'
最终得到flag:
Heisenberg
题目名称:Recover-Deleted-File
题目描述:
恢复磁盘并且找到FLAG.
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/c297795634cb4f6e8e1d88be044ec0c4.gz
题目writeup:
下载附件,并对附件解压,获得一个disk-image文件
通过binwalk命令查看文件包含的属性,发现是一个linux磁盘文件
binwalk disk-image
通过fls列出linux磁盘文件有哪些文件和操作记录,可以看到有一个目录lost+found以及被删除操作flag
fls disk-image
根据flag描述,需要磁盘数据还原,可通过 extundelete命令对其进行恢复,这里可以恢复出flag目录
extundelete disk-image --restore-file /flag
或者
extundelete disk-image --restore-all
进入到恢复数据目录,发现有一个flag文件, 修改flag执行程序,并执行flag,可获得flag内容
cd RECOVERED_FILES/
chmod +x flag
./flag
最终获得flag:
de6838252f95d3b9e803b28df33b4baa
下载附件,得到一个flag.mkv文件,打开听到一段奇怪的声音,可能有flag有关,需要将视频中的音频文件提取出来。
这里使用  MKVToolnixPortable对音频进行提取,可以看到2个mp3音频文件,先导出第二个音频文件,并保存为flag.mp3(第一个mp3音频文件,通过后面的音频文件分析没有包含flag内容)
通过音频分析工具a udacity进行分析,查看频谱图,可以看到有包含falg的内容,并不是很清晰,需要视图放大查看。
最终获得flag为:
flag{fun_v1d30_mu51c}
题目名称:很普通的数独
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/dee83d60aeda4a8cae93c5aac8f8a2ff.zip
题目writeup:
下载附件,解压附件得到25张图片, 把25张重合到一起去,得到一个完整的数组,但是没有什么用,想到25张数独可以组成5x5,是不是一张二维码呢?
仔细观察,如果把有数字的方格涂黑,下面三张图片就是二维码的三个定位码,再注意到图片数量为25张,是5的平方,所以,这25张图片组合起来就是一张二维码
             
             
               
               
               
               
观察发现,1、5、21这三张图片是定位块,但是顺序不对,将顺序换为5、21、1
BugkuCTF-MISC-很普通的数独5
于是把有数字的转换成1,没有数字的地方转换成0,再按顺序转换成01,得到下述数据将其保存为f lag.txt:
111111101010101000101000001111110000101111111
100000101100111101010011101100011001001000001
101110101110011111010011111101000101001011101
101110101101100010001010000011110001101011101
101110100011100100001111101111111011101011101
100000101100100000011000100001110100001000001
111111101010101010101010101010101011101111111
000000000011001101001000110100110011100000000
110011100100100001111111100100101000000101111
101001001011111111101110101011110101101001100
100000111100100100000110001101001101010001010
001100010011010001010011000100000010110010000
010110101010001111110100011101001110101101111
100011000100011100111011101101100101101110001
001100110100000000010010000111100101101011010
101000001011010111110011011111101001110100011
110111110111011001101100010100001110000100000
110101000010101000011101101101110101101001100
010011111110001011111010001000011011101101100
011001011001010101100011110101001100001010010
010111111111101011111111101101101111111111100
011110001100000100001000101000100100100011110
111110101110011100111010110100110100101010010
110010001011101011101000111100000011100010000
101011111011100111101111111100001010111110010
110100011000111000100111101101111101000100010
111101111110001001000011010110001111110111110
011001010101000110010100010001000101101010001
011101110101101101100100001101101000111101001
110110001001101100010101101111110100101100110
000011100111000000000100001010101111100010010
111010010011110011101110010100001011111010010
101001100010111111110100000100001010101010100
000010011001001101110101001111100101111101101
000010111101110001101011000001000101110100110
011110011010100010100000011011000001110010000
100110100100001101111111101100101110111110011
000000001111110101101000101011100100100011010
111111100011111011011010101101110011101011110
100000101110101101101000111110010001100010001
101110101011100001111111101101001000111111011
101110100110111101101000001001101100011101101
101110100000011101100001101010110010010010001
100000101011001011111011001011000011010110000
111111101010101001111011110101101110000101101
使用python脚本转换成图片:
from PIL import Image
x = 45
y = 45
im = Image.new('RGB', (x, y))

with open('flag.txt') as f:
for i in range(x):
ff = f.readline()
for j in range(y):
if(ff[j] == '1'):
im.putpixel((i, j), (255,255,255))
else:
im.putpixel((i, j), (0,0,0))

im.save("flag.jpg")
            
            
              
              
              
              
生成一张二维码图片
通过二维码QR Research扫描图片可获得一串base64的字符串
Vm0xd1NtUXlWa1pPVldoVFlUSlNjRlJVVGtOamJGWnlWMjFHVlUxV1ZqTldNakZIWVcxS1IxTnNhRmhoTVZweVdWUkdXbVZHWkhOWGJGcHBWa1paZWxaclpEUmhNVXBYVW14V2FHVnFRVGs9
7 次 base64 解码得到
https://base64.us/
最终得到flag:
flag{y0ud1any1s1}
题目名称:很普通的Disco
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/48dd5a182fcc477a9a83200d800e26db.zip
题目writeup:
下载附件,解压附件得到一个Disco.wav音频文件,于是联想和音频隐写有关
先用audacity打开,发现开头有杂音,放大查看开头
仔细的查了查,刚好有105个峰值频率高低起伏的点。峰值高的点为1,峰值低的点为0。输出出来是105个二进制数,每7个数为一组,刚好15组,也就是15个字母。
输出的二进制文件:
110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101

二进制位,8个二进制转成一个字符。这里只有105个,前七位1100110,是f的二进制形式。所以需要取出凑够8位,将步长设置成7,然后 + 0,再转成字符串

使用以下python脚本进行转换成ascii:

s = '110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101'
flag = ''
for i in range(0,len(s),7):
flag += chr(int('0'+s[i:i + 7],2))
print(flag)
最终flag:
flag{W0W*funny}
题目名称:miscmisc
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/d037429cf055493b879ef09d9b59bd41.zip
题目writeup:
1.下载附件,对其进行解压,得到一张bugoucuci.png图片,并通过binwalk对图片文件进行查看文件包含属性,发现图片文件隐藏了zip和PN两种文件。
通过foremost命令对 bugoucuci.png图片进行分离,得到2个压缩文件和一个PNG图片文件。其中2个压缩文件的内容是一样的,只需要分析其中一个压缩文件就行了。
这里对其中的一个压缩文件00000090进行解压,得到一个chadiand.zip压缩文件和一张chayidian.jpg图片文件
直接解压 chadiand.zip文件,提示需要输入密码。首先猜测可能是爆破,但是爆破了十多分钟也没出密码。说明密码和爆破无关。
接着分析 chayidian.jpg图片文件,通过binwalk命令发现图片文件包含了一个压缩文件和1张PNG图片
通过foremost对 chayidian.jpg图片文件进行分离,得到一个00000318.zip压缩文件。
对 00000318.zip压缩文件进行解压,得到一个flag.txt文件,查看文件内容并不是flag
根据解压出来的flag.txt文件以及需要密码解压的chadiand.zip文件中也包含了一个flag.txt文件,猜测是需要用到明文攻击才能解压出 chadiand.zip文件
首先通过winrar压缩软件对flag.txt进行打包压缩成flag.zip,然后对比其中CRC32的值,发现chadian.zip和flag.zip的 CRC32值是一样的。那么就可以通过明文攻击可以解压出 chadian.zip
这里通过ARCHRP对 chadian.zip文件进行明文攻击
等待十分钟后,显示加密密钥已恢复成功
然后点确定然后保存chadiand_decrypted.zip
对 chadiand_decrypted.zip进行解压,得到以下三个文件
解压whoami.zip文件,提示需要输入密码,既然解压得到三个文件,那么解压的密码一定和另外两个文件有关。
打开world.png图片文件,图片内容中 发现有提示: pass in world. 此时想到密码可能与此图片还有world.doc文件有关,在kali下通过binwalk分析无果。
那么考虑可能是图片的隐写,于是打开stegsolve打开world.png文件,
然后试探各种通道,在LSB BGR条件下发现pass,所以这是LSB信息隐写。得到pass:z^ea,去解压文件 发现不行
打开world.doc文件,显示是一段提示内容:除了这个就差一点点了,并 根据提示 pass in world 猜想 world.doc 文件 可能还会有隐藏文字
勾选word选项中的隐藏的文字,就会显示出几行像密码的 隐藏字符
到目前为止,我们从world1.png中得到 pass:z^ea 在world.doc文件中得到几行隐藏的字符串。测试了z^ea+world.do每行中隐藏的字符串都不能解压压缩文件。
出题人真的是脑洞大开,谁会想到最后的密码是 pass内容+world里每行字符串的最后一个字符,
于是解压密码就是 :z^ea4zaa3azf8
通过该密码解压出whoami压缩包,打卡压缩包中的whoami.txt就得到了flag内容。
最终flag为:
flag{12sad7eaf46a84fe9q4fasf48e6q4f6as4f864q9e48f9q4fa6sf6f48}
题目名称:flag_universe
题目描述:please find the flag in our universe!
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/d2ced53c4a2e476995845c72bc39939d.zip
题目wirteup:
打开流量包,使用筛选器筛出ftp数据流,可以看到通过ftp命令操作了universe.png和flag.txt以及new_universe.png图片
其中对比较显眼的 new_universe.png图片进行TCP数据流追踪
追踪数据流在到TCP流为10时,出现了一段base64字符串
对base64解密后得到:flag{This is fake flag hahaha},提交显示错误,该flag是假的flag
继续追踪TCP数据流,universe.png中也没有flag,当追踪到第14个TCP数据流时,有一个new_universe.png

通过原始数据格式保存为flag.png
CTF之MISC练习二_第162张图片
可以看到成功导出了一张PNG图片
通过stegsolve图片隐写工具进行查看,发现存在LSB隐写,可获得flag内容
最终flag为:
flag{Pla te_err_klaus_Mai l_Life}
题目名称:奇怪的TTL字段
题目描述:我们截获了一些IP数据报,发现报文头中的TTL值特别可疑,怀疑是通信方嵌入了数据到TTL,我们将这些TTL值提取了出来,你能看出什么端倪吗?
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/0bf565e00b864f4ba06efc858056c7e9.zip
题目writeup:
下载附件,对其解压得到一个ttl.txt文件,其内容就是一组ttl的值

该文本文件中的TTL值只有4种值:63/255/127/191,并且根据题目的介绍我们知道数据隐藏在这些值里,那么就比较容易想到的是信息隐藏在二进制中。

将这四个数值都转换成二进制得到 :1111111111111、1111111、10111111。 TTL 值为一个 8 位整数,不足 8 位的二进制数开头补 0,变为 8 位。

即:00111111、11111111、0111111、10111111

变的只有前面两位,后面6位1不变,只有前面两位藏了数据,也就是说一组TTL值可以隐藏一个字节,提取开头两位为:00110110,恰好为全排列,可以用于数据的存储:

值(D) 二进制
63 00111111
255 11111111
127 01111111
191 10111111

TTL=127--》01

TTL=191--》10

TTL=127--》01

TTL=191--》10

得到一个字母对应的8位即:01100110,即字母为:f

如果传输4个就是一字节,取前面的2位组成8位,对照二进制字母表,可以发现前面是ffd8,jpg图片标志

通过python脚本将ttl.txt提取转换后的数据并保存为图片,是因为二进制转成ASCII时发现是 jpg 文件格式。

f = open('ttl.txt','r')
TTL = f.readlines()
p = []
for i in TTL:
p.append(int(i[4:]))
s = ''
for i in p:
if i == 63:
a = '00'
elif i == 127:
a = '01'
elif i == 191:
a = '10'
elif i == 255:
a = '11'
s += a
print(type(s))
print(s)
import binascii
flag = ''
for i in range(0,len(s),8):
flag += chr(int(s[i:i+8],2))
flag = binascii.unhexlify(flag)
wp = open('res1.jpg','wb')
wp.write(flag)
wp.close()
得到一张resq.jpg二维码图片:
CTF之MISC练习二_第163张图片
通过binwalk命令查看二维码图片包含有6张图片
CTF之MISC练习二_第164张图片
并通过foremost分离出res1.jpg图片
CTF之MISC练习二_第165张图片
最终得到6张残缺的图片,可拼图为一张二维码图片

用ps拼接成二维码图片

 CTF之MISC练习二_第166张图片

通过  QR resarch二维码扫描工具读取出内容出来:

CTF之MISC练习二_第167张图片
其内容为:
key:AutomaticKey cipher:fftu{2028mb39927wn1f96o6e12z03j58002p}
根据key的信息,可以联想到一种常用的加密,Automatic加密
通过在线 解密网站:
https://www.wishingstarmoye.com/ctf/autokey
CTF之MISC练习二_第168张图片
最终flag为:
flag{2028ab39927df1d96e6a12b03e58002e}
题目名称:2-1
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/148a3ba22b8541f48f354f3e27f0aa4c.png
            
            
              
              
              
              
基础知识:

             
             
               
               
               
               
               
               
                 
                 
                 
                 
CTF之MISC练习二_第169张图片

            
            
              
              
              
              
              
              
                
                
                
                
89 50 4E 47 0D 0A 1A 0A 是PNG头部署名域,表示这是一个PNG图片

            
            
              
              
              
              
              
              
                
                
                
                
00 00 00 0D 描述IHDR头部的大小

            
            
              
              
              
              
              
              
                
                
                
                
49 48 44 52 是Chunk Type Code, 这里Chunk Type Code=IHDR

            
            
              
              
              
              
              
              
                
                
                
                
00 00 00 CE 00 00 00 CE 08 02 00 00 00 描述了Chunk Data,它是可变长度数据, 前四个字节(前8位)是宽度,后四个字节(后8位)节是高度。

            
            
              
              
              
              
              
              
                
                
                
                
F9 7D AA 93 是IHDR的CRC校验

         
         
           
           
           
           
题目writeup:
下载附件,对其进行解压得到一张misc4.png图片,但是无法打开文件
CTF之MISC练习二_第170张图片
通过winhex打开misc4.png图片,发现PNG图片文件头开头的 前 4位(80 59) 不对。
PNG (png),文件头:89504E47 文件尾:AE 42 60 82
CTF之MISC练习二_第171张图片
将其修改为89 50 并保存为flag.png
CTF之MISC练习二_第172张图片
依然打不开文件
CTF之MISC练习二_第173张图片
通过tweakPNG工具查看png图片 IHDR的CRC值,发现CRC值不对
CTF之MISC练习二_第174张图片
把图片文件IHDR 的crc校验值 修改为  55 d5 f6 4f 后发现 还是打不开
CTF之MISC练习二_第175张图片
CTF之MISC练习二_第176张图片
发现图片的宽度为0,需要 根据 crc校验值 算出图片的宽度(前8位为图像宽度,后八位为图像高度)
CTF之MISC练习二_第177张图片
下面通过python 脚本算出图片的宽度:
import os 
import binascii
import struct

misc = open("misc4.png","rb").read()

for i in range(1024):
data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x932f8a6b:
print (i)
CTF之MISC练习二_第178张图片
得到 709 ,十六进制转换后得到, 0x2c5
接下来我们在winhex中将宽度字节改为 02 C5
CTF之MISC练习二_第179张图片
CTF之MISC练习二_第180张图片
保存为falg2.png,打开图片发现包含flag内容:
CTF之MISC练习二_第181张图片
最终flag为:
wdflag{Png_C2c_u_kn0W}
题目名称:3-11
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/d0430db27b8c4d3694292d9ac5a55634.png
题目writeup:
用 Steg­solve 打开,发现是 LSB 隐写,开头 PK是 zip 的文件头
CTF之MISC练习二_第182张图片
将其另存为flag.zip,打开压缩文件,发现文件已损坏
CTF之MISC练习二_第183张图片
于是用winrar自带的修复压缩文件的功能进行修复压缩文件
CTF之MISC练习二_第184张图片
将修复好的文件保存为 rebuilt.flag.zip,对其进行解压,得到一个flag.txt文件,文件内容为base64
CTF之MISC练习二_第185张图片
将base64通过在线工具进行解密,发现是一张PNG图片
CTF之MISC练习二_第186张图片
将其保存为flag1.png图片,发现无法打开该文件
CTF之MISC练习二_第187张图片

如何变成图片呢,尝试直接改后缀名根本不行,这时候想到能不能base64转图片呢,百度一下找到了在线网站,直接转换得到了答案

网站:https://tool.jisuapi.com/base642pic.html

CTF之MISC练习二_第188张图片
CTF之MISC练习二_第189张图片
最终flag:
FLAG{LSB_i5_SO_EASY}
题目名称:互相伤害!!!
题目描述:flag 为flag{XXX}内的XXX内容
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/0fb3ac2f54b7497cb35e04265c478b76.zip
题目writeup:
下载附件,解压附件得到一个文件flag
CTF之MISC练习二_第190张图片
通过file命令查看flag文件属性为pcapng流量包文件
将其后缀名改为.pcapng
用Wireshark打开流量包,过滤http协议,发现存在多个jpg文件请求
CTF之MISC练习二_第191张图片
通过导出http对象,将jpg文件全部提取出来
CTF之MISC练习二_第192张图片
CTF之MISC练习二_第193张图片
提取出共21个jpg文件,可以看出全部为斗图素材
CTF之MISC练习二_第194张图片
首先分析图15,发现其中包含了二维码图:
CTF之MISC练习二_第195张图片
通过在线二维码扫描(这里使用QR Rearch扫描不起)可获得一串加密的字符串:
https://cli.im/deqr
CTF之MISC练习二_第196张图片
U2FsdGVkX1+VpmdLwwhbyNU80MDlK+8t61sewce2qCVztitDMKpQ4fUl5nsAZOI7 bE9uL8lW/KLfbs33aC1XXw==
根据图片文字提示“本发布会由AES独家赞助”那么上面二维码获取的字符串为AES加密的字符串。其中图片上的文字“CTF"可能和AES解密的密钥有关。可将CTF试作为解密的密码。
http://www.jsons.cn/aesencrypt/
CTF之MISC练习二_第197张图片
得到解密后的字符串:668b13e0b0fc0944daf4c223b9831e49
以 668b13e0b0fc0944daf4c223b9831e49 提交flag,发现提交失败,显然不是flag.
继续通过binwalk对其他文件进行依次分析,发现其他图片文件都包含有zip文件。
CTF之MISC练习二_第198张图片
对其中任意一个图片文件10.jpg进行分离得到一个压缩文件
CTF之MISC练习二_第199张图片
解压缩文件得到一张二维码图片,并通过QR Rearch二维码扫描工具,发现扫描出来的内容几乎都是“扔下内衣真有一线生机???交出内裤才有活路”
CTF之MISC练习二_第200张图片
仔细观察,图5文字内容可以简单理解为“扔下内衣,交出内裤”,观察斗图素材发现图11符合上述描述“来呀,互相伤害”这张图也与题目名称“互相伤害”有相同有关联。 那么就继续对图11重点分析
CTF之MISC练习二_第201张图片
图 5
CTF之MISC练习二_第202张图片
图11
通过foremost命令对其进行分离,得到一个压缩文件
CTF之MISC练习二_第203张图片
但是解压缩提取出来的压缩文件,提示需要密码
CTF之MISC练习二_第204张图片
输入上面解出来的字符串,可正常解开压缩文件
CTF之MISC练习二_第205张图片
可获得一张画中画的二维码图片
CTF之MISC练习二_第206张图片

扫描图二维码得到字符串:“扔下内衣真有一线生机????交出内裤才有活路!!!!“。

发现二维码中心还有一个二维码,将小二维码截取出来,扫码得到flag内容:

CTF之MISC练习二_第207张图片
得到flag:
flag{97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758}
但是根据题目描述,flag 为flag{XXX}内的XXX内容
最终flag为:
97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758
题目名称:签到题
题目描述:
SSCTF线上选举美男大赛开始了,泰迪拿着他的密码去解密了,提交花括号内内容(Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==)
题目writeup:
根据描述,那么falg提交的格式为ssctf{}或者flag{}, 根据flag提交格式,因此最终的 字符串必然是被栅栏密码加密过的
提交花括号内容: Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==
通过ctfcarckt00ls对其进行base64解密:
CTF之MISC练习二_第208张图片
CTF之MISC练习二_第209张图片
得到base64解密字符串:
ggQ@gQ1fqh0ohtjpt_sw{gfhgs#}
上段密文的开头是g所以必然还要经过以此凯撒密码加密的
通过对其凯撒解密,移位14得到看起来像FLAG格式的开头的SSC
CTF之MISC练习二_第210张图片
得到 位移14的凯撒解密为:
ssC@sC1rct0atfvbf_ei{srtse#}
再栅栏密码解密,每组字数8,第二栏就是ctf内容:
CTF之MISC练习二_第211张图片
CTF之MISC练习二_第212张图片
最终ctf结果为:
ssctf{ssCtf_seC10ver#@rabit}
题目名称:隐藏的信息
题目描述:
这是一个被混淆的文件,但是我忘记了这个文件的密码。你能够帮助我还原明文吗?
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/2eb44acfc89d4f0f9fa221d21ab96033.zip
wireup:
方法一:
1.下载附件,解压附件得到一个message.txt文本文件,打开文件发现内容是一串八进制的数字,需要将其转换成ascii
2.通过 python脚本将八进制数字转换成ascii
import re
import sys
s='0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113 '
a=re.findall('\d{3,}',s)
for i in a:
sys.stdout.write(chr(int(i,8)))
CTF之MISC练习二_第213张图片
得到ascii:V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K,该字符串看起来像base64加密
通过ctfcarckt00ls工具的base64解密功能对其解密,得到flag
CTF之MISC练习二_第214张图片
CTF之MISC练习二_第215张图片
方法二:
使用“八进制 十进制 ASCII相互转换【支持多个字符串】”工具解—>输入内容—>八进制转换ASCII
CTF之MISC练习二_第216张图片
得到asccii:
V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K
base64解密:
https://base64.us/
CTF之MISC练习二_第217张图片
最终得到flag:
ISCC{N0_0ne_can_st0p_y0u}
题目名称:saleae
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/5621c80acfbc445d9eb252b2660070b5.zip
题目writeup:
下载附件,对其进行解压得到一个 saleae.logicdata 文件,该文件为逻辑分析仪数据文件。通过谷歌搜索是需要用Logic软件打开,打开文件发现有4个channel,其中channel 0和channel 2有波形。
Logic 软件下载地址:https://downloads.saleae.com/logic/1.2.18/Logic+1.2.18+Win+64+Standalone.zip
CTF之MISC练习二_第218张图片
在analyzers新建一个SPI项目
CTF之MISC练习二_第219张图片
CTF之MISC练习二_第220张图片
参数设置如下,其中MOSI是主输出从输入,MISO是主输入从输出:

channel 0:规律性,等宽,是 CLK

channel 1:无波形,是主输出端 MOSI

channel 2:波形宽度不一,携带数据,为主输入端 MISO

channel 3:数据传输是低电平,为CS偏选端

CTF之MISC练习二_第221张图片
CTF之MISC练习二_第222张图片
直接竖着查看,可获得flag
CTF之MISC练习二_第223张图片
flag最终为:
flag{12071397-19d1-48e6-be8c-784b89a95e07}
题目名称:intoU
题目描述:
I'm so into you I can barely breath.And all I wanna do is to fall in deep (IntoU歌曲歌词)
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/d7351710703a49cda273d3284e7a3df1.zip
题目writeup:
下载附件,对其进行解压得到一个音频文件,通过Audacity打开音频文件进行分析,首先选择频谱图,看了大半天也没发现有flag.
CTF之MISC练习二_第224张图片
通过谷歌搜索,发现需要调整到较小的采样率,才有可能显示音频隐写,下面将其采样率设置为8000 HZ
Ariana Grande---->频谱图—>采样率—>8000 HZ
CTF之MISC练习二_第225张图片
拖动滚动条到最右边,并视图--放大,可查看到flag内容
CTF之MISC练习二_第226张图片
最终获得flag:
RCTF{bmp_file_in_wav}
题目名称:Excaliflag
题目描述:
只有一个真正的黑客可以从这个地方得到flag
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/f3f30930116f4b168e132db45907d0ee.png
题目wireup:
首先下载附件,解压获得一张图片,通过stegsolve图片隐写工具打开,然后切换色块,终获得flag内容:
CTF之MISC练习二_第227张图片
最终得到flag:
3DS{Gr4b_Only_th1s_B1ts}
题目名称:Just-No-One
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/7932f0a447b74cfc8b6820aa706e9446.exe
题目writeup:
下载附件,获得一个exe可执行程序,点击安装,进入下一步,需要输入密码,猜测可能需要逆向破解密码
CTF之MISC练习二_第228张图片
尝试通过winhex和IDA分析无果
CTF之MISC练习二_第229张图片

仔细观察,在安装软件协议的条款里面发现了一些关于和flag有关的信息:YOU MAY SUBMIT THIS TO GET TEN POINTS(你可以提交这段字符串获得标识)。

CTF之MISC练习二_第230张图片
YOU MAY SUBMIT THIS TO GET TEN POINTS:  ILOVEREADINGEULAS. 
那么最终flag为:
ILOVEREADINGEULAS
题目名称:信号不好先挂了
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/b90a71f6e04b427dba2f8d307de79145.zip
题目writeup:
下载附件,对其进行解压,获得一张apple.png图片,通过stegsolev图片隐写工具的analyse---data extract功能对图片的LSB进行查看分析
CTF之MISC练习二_第231张图片
发现图片的LSB隐写中包含了PK,该PK为压缩数据包头。
CTF之MISC练习二_第232张图片
将其保存为flag.zip
CTF之MISC练习二_第233张图片
对flag.zip进行解压,发现压缩文件已损坏
CTF之MISC练习二_第234张图片
通过winrar的修复压缩文件功能对已损坏的flag.zip压缩文件进行修复
保存为rebuilt.flag.zip,并对其进行解压,获得一张pen.png图片
CTF之MISC练习二_第235张图片
再次通过stegsolve对pen.png图片进行通道查看,发现好几个通道中都有一些条纹
CTF之MISC练习二_第236张图片
CTF之MISC练习二_第237张图片
然后两张图片长得一样,所以很容易想到可能是藏有盲水印,于是用opencv处理盲水印得到flag。

合成盲水印图,盲水印用到的py脚本可以在github上下载,https://github.com/chishaxie/BlindWaterMark,使用时需要安装前置opencv-python库

python  bwm.py  decode  pen.png  apple.png   flag.png

打开合成的盲水印图片flag.png,可看到flag内容:
CTF之MISC练习二_第238张图片
最终flag为:
unctf{9d0649505b702643}

题目名称:黄金六年

题目附件:

https://adworld.xctf.org.cn/media/task/attachments/b6c6823cbfc246249941630e647bf7b6.zip

题目writeup:

下载附件,对其解压得到一个mp4视频文件,通过winhex打开,发现在末尾隐藏的base64加密字符串

CTF之MISC练习二_第239张图片
也可以通过strings命令查看文件中包含的字符串
strings  hj6.mp4
得到base64加密字符串:
UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQAD
Dx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEf
JkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA==
通过在线解密工具,解密获得看起来像rar文件
https://base64.us
CTF之MISC练习二_第240张图片
这里通过python脚本将base64转换成rar压缩包:
import base64
code = "UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQADDx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEfJkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA=="
r = base64.b64decode(code)
file = open("flag.rar", "wb")
file.write(r)
file.close()
CTF之MISC练习二_第241张图片
打开压缩包,发现需要输入密码,通过爆破也没解密出来,解密密码可能和视频中的图片有关。
CTF之MISC练习二_第242张图片
通过free video to jpg converter,将视频中的图片提取出来
下载地址:https://secure-sc-dvdvideosoft.netdna-ssl.com/FreeVideoToJPGConverter_5.0.101.201_o.exe
CTF之MISC练习二_第243张图片
得到316张图片,通过仔细查看,发现有4张图片里面包含了二维码
CTF之MISC练习二_第244张图片
下面是提取出含有二维码的4张图片,并对4张图片中的二维码单独截图出来,通过QR Rearch进行扫描,并获得4个KEY的密码字符串。
CTF之MISC练习二_第245张图片
CTF之MISC练习二_第246张图片
CTF之MISC练习二_第247张图片
CTF之MISC练习二_第248张图片
CTF之MISC练习二_第249张图片
CTF之MISC练习二_第250张图片
CTF之MISC练习二_第251张图片

做这种题目着实应该把屏幕调亮一点,最后一张二维码找了好久死活找不到,调亮了屏幕之后就立马找到了。

将二维码扫描获得的4个KEY的字符串按照属性 拼接得到解压密码key:iwantplayctf
输入iwantplayctf密码对flag.zip进行解压缩,获得flag.txt
CTF之MISC练习二_第252张图片
打开flag.txt获得flag
CTF之MISC练习二_第253张图片
最终flag为:
roarctf{CTF-from-RuMen-to-RuYuan}
题目名称:打开电动车
题目描述:
截获了一台电动车的钥匙发射出的锁车信号,3分钟之内,我要获得它地址位的全部信息。flag内容二进制表示即可
题目附件:
https://adworld.xctf.org.cn/media/uploads/task/3d93f0c47ad94e31882e0a670eb6f5cf.zip
题目writeup:
下载附件,对其解压,得到一个音频文件,通过Audacity打开音频文件,然后通过视图---放大查看波形图。
CTF之MISC练习二_第254张图片
可以看到短波和长波
CTF之MISC练习二_第255张图片
短波为0,长波为1,转换得到 01 字符串:
0    011101001010101001100010
根据题目信息说需要地址位的全部信息
查资料得到:信号是由同步引导码,地址位和数据位构成
固定码遥控信号的构成:
CTF之MISC练习二_第256张图片
一个是PT226x的,前面4bit表示同步码,中间的8bit表示地址码,后面的4bit表示功能码,后面最后一个是停止码
一个是PT224x的,前面8bit表示同步码,中间的20bit表示地址码,后面的4bit表示功能码,后面最后一个是停止码
PT226X和PT224X不同之处,PT226X 中不可能出现10这种情况 ,这道题就是PT224X.
钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)
仔细查看波形图得到如下:
CTF之MISC练习二_第257张图片

所以去掉前面的同步码0和后面的数据位0010得到全部20bit地址位如下:
 01110100101010100110
最终flag:
flag{ 01110100101010100110}

题目名称:hong
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/3fce1ffa2af0438f82c38e321d3d3032.rar
题目writeup:
下载附件,对其解压,得到一个hong.mp3的音频文件,通过binwalk分析音频文件包含的文件,可以看到包含有jpeg图片文件
binwalk hong.mp3
CTF之MISC练习二_第258张图片
通过foremost命令对hong.mp3文件进行分离,得到2个图片文件
foremost hong.mp3
CTF之MISC练习二_第259张图片
首先查看0000161.jpg文件,发现是一张二维码图片
CTF之MISC练习二_第260张图片
通过QR Rearch二维码识别工具对 0000161.jpg文件进行扫描识别,得到一串十六进制字符串
CTF之MISC练习二_第261张图片
通过在线网站https://ab126.com,对十六进制字符串进行转换为ascii,解密出来是乱码,无用。
03f30d0ad41db4576300000000000000000100000040000000730d0000006400008400005a00006401005328020000006300000000030000000700000043000000734b0000006401006402006403006404006405006406006407006707007d00006408007d0100781e007c0000445d16007d02007c01007400007c0200830100377d0100712800577c010047486400005328090000004e694d0000006972000000692e0000006948000000696f000000696e0000006967000000740000000028010000007403000000636872280300000074030000007374727404000000666c6167740100000069280000000028000000007304000000612e7079520300000001000000730a00000000011b0106010d0114024e280100000052030000002800000000280000000028000000007304000000612e707974080000003c6d6f64756c653e010000007300000000
CTF之MISC练习二_第262张图片
最后查看另一张00000269.jpg图片,发现图片中包含有flag内容
CTF之MISC练习二_第263张图片
最终flag为:
BCTF{cute&fat_cats_does_not_like_drinking}

题目名称:3-1

题目附件:

https://adworld.xctf.org.cn/media/task/attachments/e395d6e5b79b4cc49ee4e5c704f872ae

题目writeup:

下载附件,对其进行解压,得到一个二进制文件flag,通过file命令查看二进制文件flag,发现文件格式为rar压缩包

file flag

将其二进制文件flag 重命名为flag.rar,并对压缩文件进行解压,得到一个文件flag1
CTF之MISC练习二_第264张图片
再次通过file命令查看falg1的文件格式为pcapng
file flag1
将flag1重命名为flag1.pcapng,并通过wireshark打开。搜索关键字falg,发现在http协议中有flag.zip和flag.txt进行get 请求。猜测flag和这2个文件有关。
CTF之MISC练习二_第265张图片
CTF之MISC练习二_第266张图片
通过wireshark的导出对象---http功能可导出http请求所有的文件内容。
CTF之MISC练习二_第267张图片
这里导出http请求的所有对象保存到flag文件夹下
CTF之MISC练习二_第268张图片

导出来2个文件分别为receiver和flag.zip,并对flag.zip进行解压缩,发现需要密码,解压密码需要在流量包中分析获得。
CTF之MISC练习二_第269张图片
接下继续分析流量包,对flag.rar http get 请求处进行追踪流--tcp流分析
CTF之MISC练习二_第270张图片
追踪 TCP 流 6 时,发现一些linux操作命令和一段 python 代码。
Linux 系统账户为 root,密码为 jfm,尝试用 jfm 解压失败,接下来执行 ls,cd tf/ cd wireshark/,ls 命令。 执行 cat 1 时得到 rar 文件内容, 执行 cat 2,得到 base64 编码,解码发现乱码,尝试直接用于解压,失败 执行 cat 3,得到 一段 python 代码,代码中有 AES,猜测是需要解密 其中,那个base64应该就是密文base64加密之后的字符串。
CTF之MISC练习二_第271张图片
该python是一个通过AES的CBC模式将字符串进行加密或解密的脚本,其中IV是密钥也是偏移量
# coding:utf-8
from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64

IV = 'QWERTYUIOPASDFGH'
def decrypt(encrypted):
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.decrypt(encrypted)
def encrypt(message):
length = 16
count = len(message)
padding = length - (count % length)
message = message + '\0' * padding
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.encrypt(message)
str = 'this is a test'
example = encrypt(str)
print(decrypt(example))
对上面python 代码进行修改 ,并对其编 码 用 base64 解 码 后 解 密 ((注意要先用base64解码才能进行AES-CBC解密):
# coding:utf-8
__author__ = 'YFP'
from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64
IV = 'QWERTYUIOPASDFGH'
def decrypt(encrypted):
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.decrypt(encrypted)
def encrypt(message):
length = 16
count = len(message)
padding = length - (count % length)
message = message + '\0' * padding
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.encrypt(message)
str = 'this is a test'
example = encrypt(str)
print(decrypt(example))
#增加如下两行
a='19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo='
print(decrypt(base64.b64decode(a)))
CTF之MISC练习二_第272张图片
执行修改后的python 脚本,得到base64的AES解密字符串为: No_One_Can_Decrypt_Me,并将该字符串作为密码对flag.zip进行解压缩
CTF之MISC练习二_第273张图片
成功解压出flag.txt,打开flag.txt,获得flag
CTF之MISC练习二_第274张图片
最终flag为:
WDCTF{Seclab_CTF_2017}
CTF之MISC练习二_第275张图片
CTF之MISC练习二_第276张图片
CTF之MISC练习二_第277张图片
CTF之MISC练习二_第278张图片
CTF之MISC练习二_第279张图片
CTF之MISC练习二_第280张图片
CTF之MISC练习二_第281张图片
CTF之MISC练习二_第282张图片
CTF之MISC练习二_第283张图片
wdflag{My_c4t_Ho}
题目名称:4-2
题目描述:
格式为flag{xxxxxxxx}
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/1ddbc89c20c845928498c22cd3faf1c4.txt
题目writeup:
下载附件 ,得到一个.txt文件,打开文件发现下面几个标红的字母具有一定频率数
通过词频分析得到flag,附在线分析网站:https://quipqiup.com
CTF之MISC练习二_第284张图片
得到flag: classical-cipher_is_not_security_hs
根据题目描述,提交的flag格式,最终flag为:
flag{classical-cipher_is_not_security_hs}
题目名称:5-1
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/badd3e0621ff43de8cf802545bbd3ed0
题目writeup:
下载附件,对其进行解压,得到一个二进制文件flag,通过命令file查看文件类型,并没有发现文件类型
file flag
通过winhex打开flag文件,发现字符是加了密,猜测可能xor加密
CTF之MISC练习二_第285张图片
这里通过xortool( https://github.com/hellman/xortool)对flag文件进行分析.
xortool.py是基于python的脚本,用于完成一些xor分析,包括:1. 猜想key的长度;2. 猜想key的值;3. 解密一些经过xoe加密的文件.
下面查看flag的xor加密的密钥长度,可以看到占比最大的百分百就是密钥长度为13
xortool flag
CTF之MISC练习二_第286张图片
xortool  flag  -l 13  -c  20
参数解释:
其中-l就是指定密钥长度,-c表示出现频率最高的字符。字符出现的最高频率一般为20
尝试出了key:GoodLuckToYou(根据经验将试出来的),通过以下python脚本对原文件进行异或解密:
import os

c = open("flag",'rb').read()
key = "GoodLuckToYou"
def xor(c,k):
keylen = len(k)
res = ""
for pos,c in enumerate(c):
res +=chr(ord(c) ^ ord(k[pos % keylen]))
return res
print xor(c,key)
运行python脚本得到一串字符串,其中字符串中就包含有flag内容
CTF之MISC练习二_第287张图片
最终 flag为:
wdflag{You Are Very Smart}
连环套娃压缩包破解之音频隐写
题目名称:Miscellaneous-300
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/f932f55b83fa493ab024390071020088.zip
题目writeup:
下载附件对其解压,得到一个压缩文件flag.zip,对其进行解压,提示需要输入密码,猜测需要对其压缩包进行密码爆破
通过ziperello对压缩包进行爆破
CTF之MISC练习二_第288张图片
CTF之MISC练习二_第289张图片
发现爆破出来的密码是46783,密码正好是里面压缩包名称。
CTF之MISC练习二_第290张图片
通过该密码对压缩包进行解压,可成功解密
CTF之MISC练习二_第291张图片
解压完了,又出现了一个新的压缩包,解压压缩包,又提示需要输入密码
CTF之MISC练习二_第292张图片
接着,按照上面的爆破压缩包密码的方法进行爆破
CTF之MISC练习二_第293张图片
CTF之MISC练习二_第294张图片
CTF之MISC练习二_第295张图片

结果发现密码就是压缩包内文件名。发现的规律是:解压里面又是个压缩包,解压一波,发现又是一个压缩包,后一个文件名的名字是前一个压缩包的解压密码。

让我们编写一个sh 脚本,并调用fcrackzip命令递归地破解和提取zip文件:

crack_zip.sh:

#!/usr/bin/env bash

while [ -e *.zip ]; do

  files=*.zip;

  for file in $files; do

    echo -n "Cracking ${file}… ";

    output="$(fcrackzip -u -l 1-6 -c '1' *.zip | tr -d '\n')";

    password="${output/PASSWORD FOUND\!\!\!\!: pw == /}";

    if [ -z "${password}" ]; then

      echo "Failed to find password";

      break 2;

    fi;

    echo "Found password: \`${password}\`";

    unzip -q -P "${password}" "$file";

    rm "${file}";

  done;

done;

执行sh脚本:

bash crack_zip.sh

CTF之MISC练习二_第296张图片
让它执行一段时间后,最后会得到一个12475.zip,发现纯数字密码爆破失败,这个一个复杂的密码加密的压缩包

通过fackzip的复杂密码对其进行爆破,发现爆破出来的密码为:boyzz

./fcrackzip -u -c a1 -l 1-6 12475.zip

通过unzip对12475.zip进行解压,得到一个音频文件mess.wav

unzip -q -P b0yzz 12475.zip

通过音频隐写工具Audacity打开音频文件mess.wav,并选择频谱图,就可以查看到flag的内容。


CTF之MISC练习二_第297张图片

最终 falg为:

BallsRealBolls

题目名称:双色块

题目附件:

https://adworld.xctf.org.cn/media/task/attachments/45663022307c456897d30639f56da759.zip

题目writeup:

方法一:

下载附件,对其解压,得到一个out.gif的动态图片,且只存在绿色和紫色两个颜色,分布不均匀

CTF之MISC练习二_第298张图片
CTF之MISC练习二_第299张图片
通过binwalk命令查看图片隐藏的文件,可以看到隐藏了png图片
binwalk out.gif
CTF之MISC练习二_第300张图片
通过foremost命令对out.gif进行分离,可到一个00001436.png图片
foremost out.gif
CTF之MISC练习二_第301张图片
查看分离的图片,发现图片的内容为key:ctfer2333,猜测和flag有关,且 分析这张图片无异常。
CTF之MISC练习二_第302张图片
通过GifSplitter将out.gif文件进行分帧处理
CTF之MISC练习二_第303张图片
得到576张图片,所有图片中只有紫色和绿色两种颜色,应该对应的是1和0或者0和1,可转换成01二进制数据
CTF之MISC练习二_第304张图片

按照紫色1,绿色0的规则按照先后顺序排列出了以下数据:

011011110011100001000100011011000111100001001011001010110100100000111000011101110111001101101001010110000110010100101111010001010101001001000110011100000100000101001101011000010100001001010000011010010100100101100011011010100011000101110011010010000111100101000111010011110100110101101101010100010100010001101011010010110010101101110101010110000111001101010110010110100110011101110010011001010011010101000100010100110101100001110111001111010011110101101000011010000110100001101000011010000110100001101000011010000110100001101000011010000110100001101000011010000110100001101000

每八个一组转换成ascii字符。那么通过在线工具二进制转asciii, http://www.txttool.com/wenben_binarystr.asp,可得到ascii为:o8DlxK+H8wsiXe/ERFpAMaBPiIcj1sHyGOMmQDkK+uXsVZgre5DSXw==hhhhhhhhhhhhhhhh
CTF之MISC练习二_第305张图片

按照紫色0,绿色1的规则排列出以下数据:

100100001100011110111011100100111000011110110100110101001011011111000111100010001000110010010110101001111001101011010000101110101010110110111001100011111011111010110010100111101011110110101111100101101011011010011100100101011100111010001100101101111000011010111000101100001011001010010010101011101011101110010100101101001101010010001010101001111000110010101001101001011001100010001101100110101100101010111011101011001010011110001000110000101100001010010111100101111001011110010111100101111001011110010111100101111001011110010111100101111001011110010111100101111001011110010111

同理,按照上面方面,得到一些乱码字符,显然不是我们想要的加密字符串。
CTF之MISC练习二_第306张图片

得到的加密字符串:

o8DlxK+H8wsiXe/ERFpAMaBPiIcj1sHyGOMmQDkK+uXsVZgre5DSXw==hhhhhhhhhhhhhhhh

这应该是des加密或者base64,但是有提示key,所以应该是des加密,key是上面的图片内容ctfer2333,正常来说des结尾是=,最后一串h去掉就好了。

然后到http://tool.chacuo.net/cryptdes解密

CTF之MISC练习二_第307张图片
方法二:
gif轮播之后发现是⼀个24* 24的像素点,每个像素为10 10,每个点颜⾊为00ff00或是ff00ff 先把gif分离成单帧,那么可以通过 python脚本对其进行分割成不同的单帧图像。
# ! /usr/bin/env python2
# -*- coding: utf-8 -*-

import os
from PIL import Image


def main(gif_file):
png_dir = 'C:\\Users\\backlion\\Desktop\\flag\\'
img = Image.open(gif_file)
while True:
current = img.tell()
img.save(png_dir + str(current + 1) + '.png')
img.seek(current + 1)

if __name__ == '__main__':
gif_file = 'out.gif'
main(gif_file)
CTF之MISC练习二_第308张图片
CTF之MISC练习二_第309张图片
然后读取每个png中的对应点的信息,并按照8bit转换为ascii
#! /usr/bin/env python2
# -*- coding: utf-8 -*-

import os
from PIL import Image


def main():
png_dir = 'C:\\Users\\backlion\\Desktop\\flag\\'
ret = ""
for i in range(0, 24):
line = ""
for j in range(0, 24):
file_name = "C:\\Users\\backlion\\Desktop\\flag\\" + str(i * 24 + j + 1) + ".png"
x = j * 10 + 5
y = i * 10 + 5
img = Image.open(file_name)
img = img.convert("RGB")
img_array = img.load()
r, g, b = p = img_array[x, y]
if g == 255:
line += "0"
if r == 255 and b == 255:
line += "1"
if len(line) == 8:
ret += chr(int(line, 2))
line = ""
print ret


if __name__ == '__main__':
main()

CTF之MISC练习二_第310张图片
CTF之MISC练习二_第311张图片
最终flag为:
flag{2ce3b416457d4380dc9a6149858f71db}

题目名称:Py-Py-Py
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/58cadd8d8269455ebc94690fd777c34a.pyc
题目writeup:
下载附件,得到一个pyc文件,通过uncompyle6命令将其反编译成python脚本
uncompyle6 flag.pyc>flag.py
其中flag.py是一个rc4的加密解密python脚本:
# uncompyle6 version 3.7.4
# Python bytecode 3.6 (3379)
# Decompiled from: Python 2.7.18 (default, Feb 27 2021, 08:40:44)
# [GCC 10.2.1 20210110]
# Warning: this version of Python has problems handling the Python 3 "byte" type in constants properly.

# Embedded file name: pystego.py
# Compiled at: 2017-08-01 00:44:47
# Size of source mod 2**32: 1961 bytes
import sys, os, hashlib, time, base64
fllag = '9474yeUMWODKruX7OFzD9oekO28+EqYCZHrUjWNm92NSU+eYXOPsRPEFrNMs7J+4qautoqOrvq28pLU='

def crypto(string, op='encode', public_key='ddd', expirytime=0):
ckey_lenth = 4
public_key = public_key and public_key or ''
key = hashlib.md5(public_key).hexdigest() ##将public_key以MD5方式加密,再转化成十六进制
keya = hashlib.md5(key[0:16]).hexdigest()
keyb = hashlib.md5(key[16:32]).hexdigest()
keyc = ckey_lenth and (op == 'decode' and string[0:ckey_lenth] or hashlib.md5(str(time.time())).hexdigest()[32 - ckey_lenth:32]) or ''
cryptkey = keya + hashlib.md5(keya + keyc).hexdigest()
key_lenth = len(cryptkey)
string = op == 'decode' and base64.b64decode(string[4:]) or '0000000000' + hashlib.md5(string + keyb).hexdigest()[0:16] + string
string_lenth = len(string)
result = ''
box = list(range(256))
randkey = []
for i in xrange(255):
randkey.append(ord(cryptkey[(i % key_lenth)]))

for i in xrange(255):
j = 0
j = (j + box[i] + randkey[i]) % 256
tmp = box[i]
box[i] = box[j]
box[j] = tmp

for i in xrange(string_lenth):
a = j = 0
a = (a + 1) % 256
j = (j + box[a]) % 256
tmp = box[a]
box[a] = box[j]
box[j] = tmp
result += chr(ord(string[i]) ^ box[((box[a] + box[j]) % 256)])

if op == 'decode':
if result[0:10] == '0000000000' or int(result[0:10]) - int(time.time()) > 0:
if result[10:26] == hashlib.md5(result[26:] + keyb).hexdigest()[0:16]:
return result[26:]
return
else:
return keyc + base64.b64encode(result)


if __name__ == '__main__':
while True:
flag = raw_input('Please input your flag:')
if fllag == crypto(fllag, 'decode'):
print('Success')
print crypto(fllag, 'decode')
break
else:
continue
# okay decompiling flag.pyc
根据脚本分析,在原flag.py脚本基础上,直接把下面这段代码删除了,再添加一句 print crypto(fllag,'decode')就可以修改成解密脚本。
if __name__ == '__main__':
    while True:
        flag = raw_input('Please input your flag:')
        if flag == crypto(fllag, 'decode'):
            print('Success')
            break
        else:
            continue
最终修改后的解密脚本为:
# uncompyle6 version 3.7.4
# Python bytecode 3.6 (3379)
# Decompiled from: Python 2.7.18 (default, Feb 27 2021, 08:40:44)
# [GCC 10.2.1 20210110]
# Warning: this version of Python has problems handling the Python 3 "byte" type in constants properly.

# Embedded file name: pystego.py
# Compiled at: 2017-08-01 00:44:47
# Size of source mod 2**32: 1961 bytes
import sys, os, hashlib, time, base64
fllag = '9474yeUMWODKruX7OFzD9oekO28+EqYCZHrUjWNm92NSU+eYXOPsRPEFrNMs7J+4qautoqOrvq28pLU='

def crypto(string, op='encode', public_key='ddd', expirytime=0):
ckey_lenth = 4
public_key = public_key and public_key or ''
key = hashlib.md5(public_key).hexdigest()
keya = hashlib.md5(key[0:16]).hexdigest()
keyb = hashlib.md5(key[16:32]).hexdigest()
keyc = ckey_lenth and (op == 'decode' and string[0:ckey_lenth] or hashlib.md5(str(time.time())).hexdigest()[32 - ckey_lenth:32]) or ''
cryptkey = keya + hashlib.md5(keya + keyc).hexdigest()
key_lenth = len(cryptkey)
string = op == 'decode' and base64.b64decode(string[4:]) or '0000000000' + hashlib.md5(string + keyb).hexdigest()[0:16] + string
string_lenth = len(string)
result = ''
box = list(range(256))
randkey = []
for i in xrange(255):
randkey.append(ord(cryptkey[(i % key_lenth)]))

for i in xrange(255):
j = 0
j = (j + box[i] + randkey[i]) % 256
tmp = box[i]
box[i] = box[j]
box[j] = tmp

for i in xrange(string_lenth):
a = j = 0
a = (a + 1) % 256
j = (j + box[a]) % 256
tmp = box[a]
box[a] = box[j]
box[j] = tmp
result += chr(ord(string[i]) ^ box[((box[a] + box[j]) % 256)])

if op == 'decode':
if result[0:10] == '0000000000' or int(result[0:10]) - int(time.time()) > 0:
if result[10:26] == hashlib.md5(result[26:] + keyb).hexdigest()[0:16]:
return result[26:]
return
else:
return keyc + base64.b64encode(result)

print crypto(fllag,'decode')

CTF之MISC练习二_第312张图片
执行脚本,得到 flag 的值:The challenge is Steganography, 直接提交不对,加flag{}提交仍然也不对。
根据脚本解密得到The challenge is Steganography,是pyc的隐写,百度到在pyc中隐藏payload的工具为stegosaurus。
https://github.com/AngelKitty/stegosaurus/releases/tag/1.0
通过 stegosaurus脚本查看隐藏在flag.pyc中的字符串
./stegosaurus   -x flag.pyc
最终 flag:
Flag{HiD3_Pal0ad_1n_Python}
题目名称:warmup
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/b7b7e994d7fb4316b03f446295cfd03b.zip
题目writeup:
下载附件,对其进行解压,得到一个png图片以及一个压缩包文件
CTF之MISC练习二_第313张图片
对压缩包进行解压提示需要输入密码,这里猜测可能需要爆破压缩包密码或者明文攻击、
CTF之MISC练习二_第314张图片
打开压缩包预览,发现其中包含的图片文件和附件解压得到的图片文件名称是一致的。猜测需要用到明文攻击。
CTF之MISC练习二_第315张图片
这里首先对open_forum.png图片通过winrar对其压缩成文件open_forum.zip
CTF之MISC练习二_第316张图片
同时查看到 open_forum.zip文件的CRC232值和需要密码解密的压缩包文件warmup.zip的CRC232的值一样。那么warmup.zip压缩包解压存在明文攻击。
CTF之MISC练习二_第317张图片
CTF之MISC练习二_第318张图片
通过ARCHRP攻击对 warmup.zip进行明文攻击
CTF之MISC练习二_第319张图片
这里可能完全解密成功需要一晚上,实际需要不了那么多少,在10分钟左右就可以终止。
CTF之MISC练习二_第320张图片
终止压缩包爆破后,可确定直接保存为warmup_decrypted.zip文件。
对 warmup_decrypted.zip文件进行解压缩,成功解压出三张图片,其中fuli.png和fuli2.png图片显示是一样的。
CTF之MISC练习二_第321张图片
通过stegsolve对其fuli.png图片进行通道查看,并没有发现啥。
CTF之MISC练习二_第322张图片
再次通过 stegsolve对其fuli2.png进行通道查看,发现出现一些
CTF之MISC练习二_第323张图片
根据以上判断,2张图片存在盲水印。

合成盲水印图,盲水印用到的py脚本可以在github上下载,https://github.com/chishaxie/BlindWaterMark,使用时需要安装前置opencv-python库

通过bwm.py脚本可以将2张图片合成一张图片flag.png

python  bwm.py  decode  pen.png  apple.png   flag.png

CTF之MISC练习二_第324张图片
打卡flag.png图片,可以看到flag内容
CTF之MISC练习二_第325张图片
最终flag为:
flag{bWm_Are_W0nderfu1}
题目名称:传感器1
题目描述:
已知ID为0x8893CA58的温度传感器的未解码报文为:3EAAAAA56A69AA55A95995A569AA95565556 此时有另一个相同型号的传感器,其未解码报文为:3EAAAAA56A69AA556A965A5999596AA95656 请解出其ID,提交格式为flag{xxx}
题目writeup:
基础知识:
曼彻斯特编码(Manchester Encoding),也叫做相位编码( Phase Encode,简写PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。
它在以太网媒介系统中的应用属于数据通信中的两种 位同步方法里的自同步法(另一种是外同步法),即接收方利用包含有同步信号的特殊编码从信号自身提取同步
信号来锁定自己的时钟脉冲频率,达到同步目的。
IEEE 802.4(令牌总线)和低速版的IEEE 802.3(以太网)中规定, 按照这样的说法, 01电平跳变表示1, 10的电平跳变表示0。
方法一:

先把16进制3EAAAAA56A69AA55A95995A569AA95565556都转成2进制,得到:
1111101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

又得知曼切斯特是从低到高跳变表示“1”,从高到低跳变表示“0”,即01->1,10->0。可以看到二进制除了前4位,后面都是10,01,差分曼切斯特有跳变为"0",无跳变为"1

那么实际上转换成的二进制为(去掉前面最前面1111):
101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

因此将编码进行曼切斯特解码:

00000000001001001101100010001001001111001010010110000100000110000001

转成16进制得到:
24d8893ca584181

又得知第一个ID为0x8893CA58的温度传感器就在第一个曼切斯特解码24d8893ca584181中,是第4位到11位为:8893ca58,转换成大写为8893CA58

根据上面原理,可将3EAAAAA56A69AA556A965A5999596AA95656,转换成曼切斯特解码为24d8845abf34119,取第4位到11位,最终为:8845ABF3

那么flag为:

flag{8845ABF3}

方法二:

python脚本(这里需要将3E前缀去掉,因为转换成二进制为1111,不存在曼切斯特解码特性)

char = "AAAAA56A69AA556A965A5999596AA95656"
result = char.replace("5","0101").replace("6","0110").replace("9","1001").replace("A","1010")
num = len(result)
flag = ""
flag_final = ""
result = "0"+result
for i in range(1,num,2):
if result[i:i+2][0] !=result[i-1]:
flag += "0"
if result[i:i+2][0] ==result[i-1]:
flag += "1"
print hex(int(flag,2)).upper()[2:]
CTF之MISC练习二_第326张图片
或者:
id1 = 0x8893CA58
msg1 = 0x3EAAAAA56A69AA55A95995A569AA95565556
msg2 = 0x3EAAAAA56A69AA556A965A5999596AA95656

def calc(msg):
id=''
s = bin(msg)[6:]
for i in range(2, len(s), 2):
if s[i-2:i] == s[i:i+2]:
id += '0'
else:
id += '1'
return hex(int(id, 2)).upper()

print(calc(msg1))
print(calc(msg2))
CTF之MISC练习二_第327张图片
可以看到id是取结果的4到11位,ID为: 8845ABF3
最终flag为:
flag{8845ABF3}
题目名称:halo
题目描述:
答案的格式为flag{XXXX}
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/56afc3a6c8d04cde8b1354b77fe91731.zip
题目writeup:
下载附件,对其进行解压得到一个txt文件,文件内容看来像base64加密
CTF之MISC练习二_第328张图片
通过在线base64解密网站对其进行base64解密,得到特殊的字符串:igq4;441R;1ikR51ibOOp,提交flag显示不对
CTF之MISC练习二_第329张图片
尝试多种后情况后,该加密字符串为base64和异或的加密,通过以下脚本对其进行解密:
import string
from base64 import *


b=b64decode("aWdxNDs1NDFSOzFpa1I1MWliT08w")
data=list(b)
for k in range(0,200):
key=""
for i in range(len(data)):
key+=chr(ord(data[i])^k)
print (key)
CTF之MISC练习二_第330张图片
得到的结果,发现唯一一个没有特殊字符为:jdr78672Q82jhQ62jaLL3
最终flag为:
flag{jdr78672Q82jhQ62jaLL3}
题目名称:picture3

         
         
           
           
           
           
题目描述:
flag提交形式为flag{XXXX}
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/7128eb78f49242d39b71e0496c3b52ab.jpg
题目writeup:
下载附件,得到一张图片,通过binwalk对其进行解压。得到149EC.zip  和stego.txt文件
binwalk -e  flag.jpg
CTF之MISC练习二_第331张图片
查看压缩包149EC. zip文件里面包含一个stego.txt文件且CRC32值为0CF2D018,同时对其解压,提示需要输入密码,该文件名和图片解压出来的stego.txt是相同的。需要解压该压缩包文件,猜测是需要用到明文攻击
CTF之MISC练习二_第332张图片、、
CTF之MISC练习二_第333张图片
通过winrar对 stego.txt文件进行压缩成stego.txt,查看CRC32值和149EC. zip压缩包中值相同
CTF之MISC练习二_第334张图片
这里通过ARCHPR对压缩包 149EC. zip进行明文攻击,但是明文攻击并不能恢复
CTF之MISC练习二_第335张图片
通过winrar的自带修复功能对 149EC. zip进行修复
CTF之MISC练习二_第336张图片
修复后的文件保存为rebuilt.149EC.zip,对其进行解压,发现不需要输入密码,直接解压得到一个stego.txt文件
CTF之MISC练习二_第337张图片
打开文件发现是很多行base64加密字符串
b2Q5dU==
aDk5Ni==
ZG8wOW==
ZzYxYh==
ZjU4NT==
aXBjNF==
Q3dTM2==
d1Y5c1==
dFA3WV==
ZDNQUP==
ejhBMT==
dUowaW==
OVQ2ZD==
aUM5ZU==
NnFFek==
ZGc0T/==
NGpWNE==
NVZpUW==
ejZDTm==
a1VEN5==
azNMUX==
TXlhNW==
bjZwWm==
Q2Q0b1==
猜测可能是base64隐写:
依次读取每行,从中提取出隐写位。
如果最后没有‘=’,说明没有隐写位,跳过。
如果最后是一个‘=’,说明有两位隐写位,将倒数第二个字符转化为对应的二进制索引,然后取后两位。
如果最后是两个‘=’,说明有四位隐写位,将倒数第三个字符转化为对应的二进制索引,然后取后四位。
将每行提取出的隐写位依次连接起来,每8位为一组转换为ASCII字符,最后不足8位的丢弃。
通过脚本跑出隐写,获得flag:
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s1)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res


def solve_stego():
with open('stego.txt', 'rb') as f:
file_lines = f.readlines()

bin_str = ''
for line in file_lines:
steg_line = line.replace('\n', '')
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
diff = get_base64_diff_value(steg_line, norm_line)

pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)

else:
bin_str += '0' * pads_num * 2

res_str = ''

for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i + 8], 2))
print res_str

solve_stego()
                
                
                  
                  
                  
                  
CTF之MISC练习二_第338张图片
根据falg提交格式,最终flag为:
flag{Ba5e_64OFive}
题目名称:7-2
题目描述:
提交格式为wdflag{......}
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/118956c97c7c4a3e9b1508c1f5ea44be.zip
题目writeup:
下载附件,对其进行解压,得到很多文件,文件的名称都是base64加密字符串
CTF之MISC练习二_第339张图片
同时,打开其中任意文件,发现都是一串十进制加密字符串
CTF之MISC练习二_第340张图片
通过脚本对解压的所有文件夹的文件名进行将base64解密
# coding=utf-8
import os
import base64

for name in os.listdir("C:\\Users\\backlion\\Desktop\\flag\\problem\\"):
print name
# 由于文件名不是4的倍数,需要在后面补‘=’
missing_padding = 4 - len(name) % 4
if missing_padding:
name += '=' * missing_padding
print str(base64.b64decode(name.encode()))
执行脚本得到只有文件名YWluaWRleGluZ3podWFuZw base64解密出来的字符串ainidexingzhuang是正常显示无乱码。
CTF之MISC练习二_第341张图片
打开 YWluaWRleGluZ3podWFuZw文件,发现一串数字,其中包括了{和}中的数字。那么很有可能这些数字解码后就是flag
CTF之MISC练习二_第342张图片
得到{和}中的数字为:82 42 82 52 63 21 42 22 73 21
该数字使用的是手机9键加密,第一个数字代表9键键盘下的数字,第二个数字代表该数字下的第几个字母。
CTF之MISC练习二_第343张图片
得到9键盘加密的字符为: uhukoahbra
通过凯撒解密得到一个有意义的字符ylyoselfve就是ctf的内容。
CTF之MISC练习二_第344张图片
根据flag提交格式,最终flag为:
wdflag{ylyoselfve}
题目名称:4433
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/3f8b0f935fa74f3c9cea382bf3687569.rar
题目writeup:
下载附件,对其解压得到一张图片,通过stegsolve图片隐写工具打开,查看通道,在橙色通道中出现了一张二维码图片。
CTF之MISC练习二_第345张图片
通过QR Reach二维码图片扫描工具识别出内容是一串摩尔斯字符。
CTF之MISC练习二_第346张图片
得到内容:
...--.----...--..
想要解码但是不知道怎么分割,于是想到题目名称 4433,表示 4 个 4 个 3 个 3 个分隔开。
那么摩尔斯密码加密密文为:
...-/-.--/--./..-/-..
通过在线工具工具对其解密得到:VYGUD
https://www.bejson.com/enc/morse/
CTF之MISC练习二_第347张图片
将VYGUD进行flag提交,发现不对
由搜索引擎搜索摩斯密码可知摩斯密码常用的缩写中:VY代表VERY,GUD代表GOOD,那么flag为内容为:VERYGOOD
可参考:https://zh.wikipedia.org/wiki/%E6%91%A9%E5%B0%94%E6%96%AF%E7%94%B5%E7%A0%81#%E5%B8%B8%E7%94%A8%E7%BC%A9%E5%86%99
最终flag为:
flag{ VERYGOOD}
题目名称:Run
题目描述:
Run away! nc **.**.**.** XXXX
题目场景:
111.200.241.244:64579
题目writeup:
nc连上发现是一个python沙盒逃逸,一些能引发命令执行的python库全部被禁用了。
最后在网上发现这么一个文章  https://blog.csdn.net/qq_35078631/article/details/78504415

通过().class.bases[0].subclasses()获取当前加载的类

发现func_globals被过滤了,我们使用__getattribute__绕过

最终payload:

w = ().__class__.__bases__[ 0].__subclasses__() o = w[ 59].__enter__.__func__.__getattribute__( '__global' + 's__')[ 's'+ 'ys'].modules[ 'o'+ 's'] s = o.__getattribute__( 'sy' + 'stem') s( '/bin/sh')
执行payload得到当前sh脚本运行权限
CTF之MISC练习二_第348张图片
通过cat命令查看文件5c72a1d444cf3121a5d25f2db4147ebb,得到falg
最终flag:
flag{eee93c33d97aa55f785a7d10ba4ae3ce}
题目名称:流量分析
题目描述:sql注入
题目附件:
https://adworld.xctf.org.cn/media/task/attachments/4d7c14206a5c4b74a0af595992bbf439.pcapng
题目writeup:
下载附件,得到一个 pcapng流量包文件,通过wrireshark打开该文件,根据题目描述SQL注入,那么过滤HTTP协议,对其进行分析
CTF之MISC练习二_第349张图片

看到很多注入语句,sql注入语句都是字符32开始的,第一波语句结束字符是102,恰好对应的ascii为f

CTF之MISC练习二_第350张图片

第二波语句结束字符是108,对应的ascii为l

CTF之MISC练习二_第351张图片

第三波语句结束字符是97,对应的ascii为a

第四波语句结束字符是103,对应的ascii为g

第六波语句结束字符是123,对应的ascii为{

以此类推得到flag: flag{c2bbf9cecdaf656cf524d014c5bf046c}

也可以通过python脚本获取

import re
import os

def getflag(contents):
req_reg = re.compile(r'0,1\),(\d+),1\)\)=(\d+)%23')
results = req_reg.findall(contents)
flag_map = {}
for result in results:
if result[0] in flag_map:
if int(result[1]) > flag_map[result[0]]:
flag_map[result[0]] = int(result[1])
else:
flag_map[result[0]] = int(result[1])
flag = ""
for i in range(1,39):
flag += chr(flag_map[str(i)])
print(flag)

if __name__ == "__main__":
basedir = os.path.dirname(__file__)
filename = "misc.pcapng"
file_path = os.path.join(basedir, filename)
print(filename)
with open(file_path, 'rb') as f:
getflag(f.read())
CTF之MISC练习二_第352张图片
最终得到falg:
flag{c2bbf9cecdaf656cf524d014c5bf046c}
题目名称:传感器2
题目描述:
已知ID为0x8893CA58的温度传感器未解码报文为:3EAAAAA56A69AA55A95995A569AA95565556 为伪造该类型传感器的报文ID(其他报文内容不变),
请给出ID为0xDEADBEEF的传感器1的报文校验位(解码后hex),以及ID为0xBAADA555的传感器2的报文校验位(解码后hex),并组合作为flag提交。
例如,若传感器1的校验位为0x123456,传感器2的校验位为0xABCDEF,则flag为flag{123456ABCDEF}。
题目writeup:
方法一:

先把16进制3EAAAAA56A69AA55A95995A569AA95565556都转成2进制,得到:
1111101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

又得知曼切斯特是从低到高跳变表示“1”,从高到低跳变表示“0”,即01->1,10->0。可以看到二进制除了前4位,后面都是10,01,差分曼切斯特有跳变为"0",无跳变为"1

那么实际上转换成的二进制为(去掉前面最前面1111):
101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

因此将编码进行曼切斯特解码:

00000000001001001101100010001001001111001010010110000100000110000001

转成16进制得到:
24d8893ca584181

又得知第一个ID为0x8893CA58的温度传感器就在第一个曼切斯特解码24d8893ca584181中,是第4位到11位为:8893ca58,ID转换成大写为:8893CA58

根据上面原理,可将3EAAAAA56A69AA556A965A5999596AA95656,转换成曼切斯特解码为24d8845abf34119,取第4位到11位,ID转换成大写为:8845ABF3

或者

id1 = 0x8893CA58
msg1 = 0x3EAAAAA56A69AA55A95995A569AA95565556
msg2 = 0x3EAAAAA56A69AA556A965A5999596AA95656

def calc(msg):
id=''
s = bin(msg)[6:]
for i in range(2, len(s), 2):
if s[i-2:i] == s[i:i+2]:
id += '0'
else:
id += '1'
return hex(int(id, 2)).upper()

print(calc(msg1))
print(calc(msg2))
CTF之MISC练习二_第353张图片

根据计算机网络报文首部的一些学习,这里我进行了类比,可能校验位应该是最后几位,依次尝试过都无果,但想到,除了最后2位不同,中间ID不同,其他均相同,可见校验位就是最后2位,那么校验位的计算应该是用CRC进行计算,而前面的位数是7位,尝试计算,但是得出的值并不是预计的。
后来想到可能缺位了,故又往前算了一位:
得到:024D 8893CA58 41 81和024D 8845ABF3 41 19
对024D 8893CA58 41和024D 8845ABF3 41进行CRC8运算

CTF之MISC练习二_第354张图片
CTF之MISC练习二_第355张图片

可以得到81和19,与猜想一致

下面就可以用这个方法解出flag
带入ID:DEADBEEF和BAADA555
得到:024D DEADBEEF 41

https://www.23bei.com/tool-233.html

CTF之MISC练习二_第356张图片

024D BAADA555 41

CTF之MISC练习二_第357张图片


计算CRC8,分别得到:B5和15

方法二:

也可以通过脚本获取:

#!/usr/bin/python

def crc(x,y):
while(x>y):
l = len(bin(x)) - len(bin(y))
t = int(bin(y)[2:]+'0'*l,2)
x ^= t
return x
m = 0
for i in range(0x200):
if i < 100:
continue
if crc(0x24d8893ca584100,i) == 0x81 and crc(0x24d8845abf34100,i) == 0x19:
m = i
print i
break
print hex(crc(0x00024ddeadbeef4100,m))
print hex(crc(0x00024dbaada5554100,m))
CTF之MISC练习二_第358张图片

最终得到flag:

flag{B515}

你可能感兴趣的:(算法)