1.这是一张单纯的图片
2.隐写
3.telnet
下载文件zip(无后缀),推测为zip包。补全后缀并打开
果然如此,尝试打开报错,用010Editor查看文件头为504B0304
文件为压缩包文件修改后缀打开
看不懂,百度XML文件了解一下下,没得头绪。
尝试直接查看文件,直接搜索出现flag。
感觉有用,解码得:sdnisc_2018
接着继续分析,010Editor打开,文件头为FFD8FF,文件尾应为FFD9。
很明显看到结尾不是FFD9,向上翻一点可以看到文件尾。
猜测为两个文件拼接,binwalk ada.jpg
猜测正确。binwalk -e ada.jpg
分离文件,得到压缩包。解压需要密码,尝试输入刚开始得到的 sdnisc_2018 密码正确,得到flag。
拖入kali binwalk分析
不晓得为啥binwalk -e 没有分离图片
这里使用了foremost分离结果如下:
打开jpg文件夹即可得到flag
随便一个识图网站即可
360识图
百度识图
得到flag.rar解压密码——方法一:
通过百度可以知道红桃k为查理曼,雅典娜为黑桃Q,梅花J代表着兰斯洛特。观察键盘可以发现对应数字为8、1、7。(如若不理解,搜一下打字指法,大概就可以明白为什么KQJ对应8、1、7了)然后就把817排列组合,挨个试就可以得到解压密码了。
得到flag.rar解压密码——方法二:
使用APCHPR进行爆破
得到flag.rar解压密码——方法三:
fcrackzip暴力破解
fcrackzip是破解zip压缩包的,题目中虽然为rar后缀,但文件头为zip,故可以使用fcrackzip暴力破解
fcrack使用方法
解压得到一张图片,winhex打开,最后可以发现 flag(BASE64 加密的) 。解密即可。
Base64密文有如下特点:
1.字符串只可能包含A-Z,a-z,0-9,+,/,=字符
2.字符串长度是4的倍数
3.=只会出现在字符串最后,可能没有或者一个等号或者两个等号
下载直接打开
emmmm 010editor打开
很明显BASE64加密的,还原为图片。得到二维码。使用 小米手机_(:з」∠)_扫一扫即可得到flag。
使用Stegsolve逐帧查看,同时使用屏幕二维码扫描器得到二维码包含的信息 即可得到flag。
下载解压之后发现是一个游戏
试玩一下会发现多了几个文件
其中有一个文件名为save1(关卡)
修改即可
查看属性,未得到有用信息。010editor 打开
在结尾处发现:
可以看出来有 flag 和 {} ,明文信息未改变,只是打乱了顺序,推测为栅栏加密法加密,解密即可。
方法二 cat flag |grep ‘{’ -a -C 1 flag
查找 { 字符
方法三 strings flag
tweakpng打开
CRC校验错误,宽度或者高度出错。修复即可得到flag。
文件头为504B 0304(zip压缩文件),修改后缀名。
解压缩粗略查看后,flag应在cn文件夹
windows下cmd
flag为base64加密,解密即可。
已经提示了前七位密码。所以我们可以暴力破解。
破解工具我们选择aircrack-ng这里没得问题。但是字典怎么弄,我不晓得。
然后就问度娘了。发现了一个很好的字典生成工具crunch
思路
打开图片看到SHOT ON MI 6
感觉属性里应该有信息,果不其然在备注中发现了信息
base64加密的 ,先解密出来
然后放到kali里
得到一个加密的rar文件,输入刚刚解密得到的字符串
里面是一张图片,额…
和这是一张单纯的图片一毛一样的解法。得到flag
首先查看图片属性,无果
放到kali里,binwalk分析图片
分离出一个压缩包,打开发现有一张gif图和一些文件。首先根据文件头将文件的后缀名补齐。
很明显88.jpg有一张二维码。定位符好像有残缺,一直扫不到,给它补齐扫码的到bilibili。
然后查看各个图片的属性在888.jpg的备注得到base64加密的字符串,解密得到silisili。
8888.jpg也是binwalk得到一张二维码,扫码得panama
结合题目提示flag格式:flag{xxx_xxx_xxx}
将上面的字符串组合即可得到flag。
题目提示 hint:LSB BGR NTFS
LSB为最低有效位;BGR为最低有效位的顺序;根据提示得:
应该是一张png格式的图片,但是文件头不对,将前面多出来的 fffe 删去,保存得到半张二维码。
应该是高度做了手脚,修正即可。
补全后扫的时候发现扫不到。仔细观察发现颜色是反的,将其反色得到正确的二维码。
扫描完整的二维码,得到一个百度网盘的地址。
下载后得到 flag.rar 文件。解压得到flag.txt。然而…
按理说有三个提示,但是目前为止只用到两个,剩下的NTFS死活不知道有啥用。
后来百度了大佬的writeup,才晓得还有一个NTFS交换数据流隐藏文件的骚操作。
然后将隐藏的文件弄出来,是一个pyc文件。
反编译为py文件。
import base64
def encode():
flag = '*************'
ciphertext = []
for i in range(len(flag)):
s = chr(i ^ ord(flag[i]))
if i % 2 == 0:
s = ord(s) + 10
else:
s = ord(s) - 10
ciphertext.append(str(s)
return ciphertext[::-1] #取从后向前(相反)的元素
ciphertext = [
'96',
'65',
'93',
'123',
'91',
'97',
'22',
'93',
'70',
'102',
'94',
'132',
'46',
'112',
'64',
'97',
'88',
'80',
'82',
'137',
'90',
'109',
'99',
'112']
py文件是加密函数,写一个解密函数
import base64
def decode():
ciphertext = ['96','65','93','123','91','97','22','93','70','102','94','132','46','112','64','97','88','80','82','137','90','109','99','112']
flag = ""
ciphertext.reverse()
for i in range(len(ciphertext)):
s = int(ciphertext[i])
if i%2 ==0:
s = s-10
else:
s = s+10
flag += chr(i ^ s)
print(flag)
decode()
得到flag
使用MP3Stego,使用方法百度。
结果如下:
打开sycgeek-mp3.mp3.txt即可得到flag。
010Editor打开二维码图片:
这一串数字最大为7,应该是8进制。跑脚本
with open(r"C:\Users\xxx\Desktop\CTF\25.txt", "r") as temp:
res = ""
for i in range(42):
s=eval('0o'+temp.read(3))
res+=chr(int(s))
print(res)
得到flag
解压出图片后,查看属性、010Editor打开、binwalk、CRC校验高宽度。
均无任何发现,可能是LSB 和 图层隐写。
果然是LSB隐写
解压得到 flag.zip 和 logo.png
解压flag.zip发现它是加密的
预览发现flag.zip 包含一张相同的 logo.png
所以可以采用明文攻击破解密码
注意:明文攻击时采用的算法应该相同,并且明文攻击需要两个压缩包都只含一个文件
,
我的 ARCHPR 不可以得到密码。网上说是版本的原因
最终得到密码 q1w2e3r4
解压得到的一份word文档,文档里面是一张笑脸。
我们没发现什么有价值的东西。接下来我们把word文档放到 kali 里
binwalk分析一下。
分离出来的文件加中有一份flag.txt文档。打开以后是一串BASE64加密的字符串。
解密即可得到flag。
下载得到一张图片,属性 -> binwalk -> 颜色通道 -> LSB(均未得到线索)
010Editor打开。详细查看:
FF D9 是jpg文件的尾部。紧挨着是一串二进制数。将其转换为字符。
s = input("输入要转换的字符串:")
list = s.split()
str1 = '0b'
for i in list:
str2 = str1 + i
char1 = chr(eval(str2))
print(char1,end = "")
应该是有用的。翻到最下面发现还是FF D9结尾。那应该还有一张图片。
搜索jpg的文件头。又发现了一张图片。然而这张图片并没有什么用。
后来实在是没有思路
看了大佬的WP,又了解到一个新的文件头(7z压缩包的头:37 7A BC AF 27 1C)
将原来错误的文件头38 7B BC AF 27 1C修改为正确的文件头,然后分离出来
再将7Z压缩包里的图片和原图片的高度修改可以发现:
结合起来得到 not flag{666C61677B6D795F6E616D655F482121487D}
BASE16解密得到flag。
010Editor打开下载的图片,可以发现后面是一串二进制文本。
将其转换为ASCII码
得到许多的坐标,应该是鼠标的流量数据包,转换为Gnuplot可以识别的格式
下载打开是二进制文本。首先转换为16进制。
在文本开头添加 0b 。跑一下脚本。
file1 = open(r'C:/Users/xxx/Desktop/CTF/BugKu/杂项/30/1.txt' , "r")
s = file1.read()
print(hex(int(s , 2)) , end = "")
file1.close()
去除开头的0x。开头为52 61 72 21(rar文件头)。将十六进制数复制至Notepad++
转换为ASCII码(插件 -> converter -> Hex->ASCII)
保存为rar文件。解压得到一张图片,属性内包含一串BASE64加密的密文
解密得到flag。
使用Audacity打开可以发现有一些像莫尔斯密码的东东
短的代表.
长的代表-
。将得到的莫尔斯电码解码:
得到字符串一点头绪没有,
BASE64解码不对
falg{5BC925649CB0188F52E617D70929191C}不对
key{5BC925649CB0188F52E617D70929191C}不对
万万没想到直接提交字符串就可以~
下载下来是一个txt文档,打开是一行行RGB值(共61366行),每行代表一个像素点。
分解因数
长和宽 就这三个数的组合。(例:长 2,宽 30683…)
跑一下脚本就可以还原出来图片。
跑脚本前需安装pillow库
python安装pillow(转载)
脚本(转载)
下载解压缩是25张数独图片
仔细观察发现这是同一道数独题。有的格子有数字,有的没有
有数字的代表1,没有的代表0。再把得到的数字用python画出二维码。
1.png,5.png,21.png仔细看看就是是二维码的定位形状,三个角上的方形块,但是按排列的画,这三个图的顺序不对,需要将图片1.png,5.png,21.png重命名成:5.png,21.png,1.png,然后把01提取出来:
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
写脚本把图画出来:
from PIL import Image
x = 45
y = 45
im = Image.new("RGB",(x,y))#创建图片
with open("1.txt") as file:
list1 = file.readline()
for i in range(x):
for j in range(y):
if list1[i * x + j] == '1':
im.putpixel((i,j), (0, 0 ,0))
else :
im.putpixel((i,j), (255, 255, 255))
im.show()
扫码得到Base64密文
Vm0xd1NtUXlWa1pPVldoVFlUSlNjRlJVVGtOamJGWnlWMjFHVlUxV1ZqTldNakZIWVcxS1IxTnNhRmhoTVZweVdWUkdXbVZHWkhOWGJGcHBWa1paZWxaclpEUmhNVXBYVW14V2FHVnFRVGs9
解密好几次后得到flag。
下载解压得到七张图片
用tweakpng打开得到的图片,CRC校验出错,改一下高度。(其实在每张图片的颜色通道有提示信息,连起来就是Make Me Tall把图片加高)
可以看到下面有黑白相间的小方块,记录下来(黑色代表1,白色代表0)
后面我就想不通20个二进制可以表示个啥?
万万没想到是竖着看(所以不要被思维局限 0.0),跑个脚本就可以得到flag了。
row1 = '11111111010111101111'
row2 = '11111011111110111111'
row3 = '00001100101010110001'
row4 = '01001010010000001101'
row5 = '11010011011101010111'
row6 = '10011011011010110110'
row7 = '00111001101101111101'
for i in range(0 , 20):
str1 = row1[i] + row2[i] + row3[i] + row4[i] + row5[i] + row6[i] + row7[i]
print(chr(int(str1 , 2)),end = '')
解压得到一个压缩包、一张图片、一张二维码
拼接起来flag{hackermisc12580}
大佬的Write up
大佬的Write up
思路
(写给自己:注意python会将换行符当作一个字符。跑字典时要注意)