下载附件
打开后解压,发现了.docx文件
我尝试了改后缀,转格式,编码都失败了,最后在winhex打开,查看文件头
但是并没有flag
还有word文件夹,首先打开,找到document.xml
在sublime下打开,find flag
下载附件,发现是个压缩包文件,改名为.zip压缩打开
发现还是压缩文件,一路解压,最终发现两张图片
对两张图片进行对比,用Stegsolve.jar
得到了一张图片
图像过于清晰,导致大写的i,看成了小写的l,提交了n次,这里给出flag,留出时间做其他
AZADI TOWER
** 千万不要加上任何前缀**
图片用winhex打开,直接得到flag,不要想太多
steganoI
用winshark打开文件
ctrl+F查找flag,发现条目
下载附件发现是个zip,并没有伪加密,直接解压,并将打开的文件重命名为.txt
打开后发现了一串字符,英文最大不超过F
flag{hello_world}
难度系数:
题目来源: WDCTF-2017
垃圾wp,根本无法得到,做出来的大佬请留言
WDCTF-2017:4-2
【原理】
字频分析
【目的】
简单了解字频分析
【环境】
windows,linux
【工具】
无
【步骤】
字频分析得到flag,
无
这个GIF皮的很啊,用了好多方法分离,最终还是败在了convert这个工具里了
在kali用分离命令将图片分离
convert glance.gif flag.png
得到了一大堆的.png图片,足足200多个
然后横向合成,用montage,
montage flag*.png -tile x1 -geometry +0+0 a.png
-tile是拼接时每行和每列的图片数,这里用x1,就是只一行
-geometry是首选每个图和边框尺寸,我们边框为0,图照原始尺寸即可
*的意思指的所有的.png
这里参考博客原创主
最后得到拼接好的图片
得到flag
TWCTF{Bliss by Charles O'Rear}
下载附件发现是个压缩包,解压需要密码,首先想到的就是伪加密。
在winrar 修复之后,发现并不能将它解压出来,只好使用杀手锏,对它进行分析
在winhex下打开,看到16进制的编码,zip的开头是50 4B 03 04
50 4B 01 02:目录中文件文件头标记
3F 00:压缩使用的 pkware
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
压缩源文件目录结束标志 :50
4B 05 06:目录结束标记
在winhex里面搜索,50 4B
将全局方式位标记全部改为00 00
发现压缩包能够正常的打开
发现了一张图片和一个flag.txt
重点在图片上,进行stegsolve打开,得到flag
打开附件后发现这是一个pcap文件,将它用winshark打开
搜索flag,发现了flag.png,几乎每个条目里都有,但是并不能分离出来
最终还是向writeup低了头,发现了一款新的工具
tcpxtract
在linux环境下,用binwalk对图片进行分析:
用dd if 文件名 of 1.png skip=26441
分离出的图片不能被打开,才发现图片需要恢复,用简单的提取是不行的
下载地址
分离命令:
tcpxtract -f 40150e85ac1b4952f1c35c2d9103d8a40c7bee55.pcap Found file of type "png" in session
分离出两张图片,还是不能查看,但是放入winhex发现,它的头部少了89
加上后保存,其中一张可以打开,出现了flag
难度系数:
题目来源: WDCTF-finals-2017
本题给出一张图片,但是并无法显示出内容,放到hex里面,发现它的数据头是错的
将它改为89 50,发现并没有显示出图片的内容。
试试放到tweakpng 工具中,发现它的检验值是错的,显示为0x932f8a6b
所以需要将它的校验值为0x932f8a6b,查看下,宽度是0,而高度760,所以这道题就需要改宽度
脚本如下:
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)
大致解释一下脚本:
爆破crc校验所需要了解到的PNG文件头知识
- (固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头
- (固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13
- (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)
- (可变)13位数据块(IHDR)
- 前四个字节代表该图片的宽
- 后四个字节代表该图片的高
- 后五个字节依次为:
Bit depth、ColorType、Compression method、Filter method、Interlace method
- (可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七位字节进行crc计算得到。
参考链接
binascii
bianscii库是一个进制转换库,可以实现二进制与ASCII的转换,将图片以二进制打开,存到misc变量中,
用struct.pack对i进行转换,转换为一层包装的python大端整型字节,用binascii.crc32得到校验值,与0xffffffff做与运算,得到16进制,与正确的0x932f8a6b比较,爆破出i,修改宽度,得到flag.
下载附件,发现pdf文件,习惯的用linux的命令查看pdf的内容,所以命令:
pdfinfo 2333.pdf
结果并没有什么东西,对它进行火狐的命令行
在控制台输入:
document.documentElement.textContent
查看信息,并没有出现隐藏flagd的内容
binwalk分离一下,发现了三张图片,有戏
【原理】
日历中的日期隐藏flag
【目的】
了解日历中隐藏flag的方法
【环境】
linux
【工具】
2017年新加坡日历
【步骤】
通过题目描述可以发现按-分割是12组,然后数字似乎都是两位的,于是按两位分割之后发现都是0-31范围内的,于是联想到月份,找出一份2017新加坡日历:
01081522291516170310172431-050607132027162728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-0203040310172431-0102030108152229151617-04050604111825181920-0108152229303124171003-261912052028211407-04051213192625
用formost图片分离出压缩包,解压后为两张图片和一个tip.txt
看似一样,用stegsolve的拼图功能,对比不出结果,查了查,发现了盲水印的存在
gitHub地址
由于盲水印的脚本运行环境为python2,还得需要安装python2的库,我的过程如下:
python2 -m pip install --upgrade pip
由于用到cv2这个库,所以安装
pip install opencv-python
最后安装:
pip install matplotlib
之后就可以成功运行脚本,执行以下命令
python2 bwm.py decode day1.png day2.png flag.png
拿到了流量分析的文件,打开有很多包
找了个tcp流跟踪了一下,发现了flag
巨坑的是,提交不对,最终改为sctf{Easy_Modbus}成功通过
考察xortool工具的使用
安装
linux下:
pip2 install xortool
可以看到13机率最大
其中-l就是指定密钥长度,-c表示出现频率最高的字符。这个需要根据经验,比如文本内容一般是空格(20),二进制文件一般是00
解密脚本
import os
c = open("1",'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)
得到未知名的文件,用binwalk 分析下,发现是bz2压缩包,在linux下解压得到一个git仓库的文件夹
tar -xjvf bz2文件
解压缩命令
进入目录下,找到flag.txt
用git命令查看日志,但是没有找到这个文件
首先补充
git stash 的作用
git stash用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作.git stash将本地的修改保存起来,并且将当前代码切换到HEAD提交上.
通过git stash存储的修改列表,可以通过git stash list查看.git stash show用于校验,git stash apply用于重新存储.直接执行git stash等同于git stash save.
原文链接:https://blog.csdn.net/zz_Caleb/article/details/89331985
https://www.jianshu.com/p/14afc9916dcb
用如下命令查看修改的文件列表
git stash list
git stash show
git stash apply
得到一个用±<>这样符号组成的五角星,结合题目stdio,估计是c语言编译后的文件
查到BrianFuck语言,找个在线编译器或者找到编译码(c++)得到flag
在线编译网站
brainfuck
或者c的编译码
地址