0x01 我可是黑客
下载图片使用winhex打开在末尾发现flag。
0x02 假装安全
下载图片后binwalk跑一下发现图片里面隐写了一个ZIP压缩包,其中有个flag.txt的文件,更改后得到压缩包。
解压发现有密码。
使用winhex打开压缩文件
一格zip文件有三个部分组成:
[压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志]
这里主要看第二部分压缩源文件目录区
组成 | 长度 | 值 |
---|---|---|
目录中文件头标记 | 4bytes | 0x02014b50 |
压缩使用的 pkware 版本 | 2 bytes | 0x003F |
解压文件所需 pkware 版本 | 2 bytes | 0x0014 |
全局方式位标记 | 2 bytes | 0x0809 |
压缩方式 | 2 bytes | 0x0008 |
这里将全局方式位09改位00就没有密码了。
直接解压得到flag字符串,标准的栅栏密码,修改下得到flag。
0x03 扫扫出奇迹
打开图片发现扫不了,是一个取反色的二维码,无法识别。
用stegsolve的XOR可以取反色。得到二维码。
扫描后得到flag。moctf{qr_code_1s_1n_1t}
0x04 光阴似箭
是个gif图字不断变化其中有flag。
使用stegsolve打开后用frame browser得到flag
记得镜像显示的记得倒过来写moctf{Flash_Movie}。
0x05 杰斯的魔法
看下知道是JS脚本直接在控制台运行就行了,当然转化下url编码也就直接有答案了。
0x06 流量分析
用fidder打开发现是用wireshark保存的流量包。使用wireshark打开流量包。利用分析中的追踪流量进行分析发现flag
0x07 女神的告白
从题目得知压缩密码是以名字meimei开头的,这里我们可以使用ARCHPR进行掩码攻击,从第一位才是逐位增加。在测试到第四位的时候得到密码。
解压后得到flag。
0x08 捉迷藏
解压文件后在flag.txt得到一个字符串。经过base64解码得到一个flag。
bW9jdGZ7QnVfeUEwX3QxX2oxYTB9
#base64解密后得到
moctf{Bu_yA0_t1_j1a0}
提交后发现不是正确的flag,将解压出来的另外一个2.jpg进行binwalk跑一下,发现里面包含一个zip压缩文件,解压后从flag.txt中得到一串数字
109 111 99 116 102 123 104 49 100 51 95 97 78 100 95 115 51 51 75 125
将10进制转化成ascii后得到flag
0x09 是兄弟就来干我
下载压缩文件,解压后得到图片和另一个压缩文件。
图片为png文件,在使用stegsolve中LSB隐写分析,选择BGR时候发现隐藏图片。
将文件使用二进制保存,因为png的头文件为八个字节
89 50 4E 47 0D 0A 1A 0A
所以使用winhex打开并将000000000000236f删除保存为新的图片后打开得到:
根据图片提示在猜测名字为zhazhahui的时候解开flag.zip得到flag.txt
在这段flag中没有出现moctf属于加密了。使用凯撒密码,这里偷了个懒,因为flag的形式是为moctf{XXX}的形式所以第一个字母应该为m,从f到m共移动了7位,我这里写代码就是以7位移动来写的。
lowercase = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
uppercase = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
c_txt = "f_hfv7m_y8{kThk43a_xrk0?n}"
p_txt = []
for i in range(len(c_txt)):#调出密文每一个字符
x = (ord(c_txt[i]))
if x>96 and x<123:#判断小写
y = x+7
if y>122:#如果比z大从a开始循环
z = lowercase[y-123]
p_txt.append(z)
else:
p_txt.append(chr(y))
elif x>64 and x<91:#判断大写
y = x+7
if y>90:#如果比Z大从A开始循环
z = uppercase[y-91]
p_txt.append(z)
else:
p_txt.append(chr(y))#不是字母不做移动
else:
p_txt.append(chr(x))
print("".join(p_txt))
从运行结果可以看到是个栅栏密码,解密后得到flag。
0x10 百变flag
binwalk一下得到一个压缩包,解压压缩包看到一个f1ag.exe,winhex打开发现十六进制反了。
使用脚本修复
f = open("f1ag.exe",'rb')
f_w = open("f1ag.jpg",'wb')
f_r = f.read()[::-1]
f_w.write(f_r)
得到flag moctf{1mage_is_funny}
得到一张图片,打开图片即可得到flag
0x11 蒙娜丽萨的微笑
加密文件查看Hex发现是16进制。修改09为00修改得到图片。
看到蒙娜丽莎是个秃头可能高度不正确,用winhex打开继续修改高度。
得到一串字符串
使用base64解密得到明文字符串smileisintering。
翻译过来说微笑被埋葬,使用winhex进行查找flag,发现存有504B0304zip压缩包头标识,504B压缩包结束标识
将以504B0304开头部分保存为新文件得到一个新压缩包。发现压缩包中有个flag的文件,打开提示需要输入密码,密码就是之前我们得到的smileisintering,输入后使用记事本打开得到flag。
0x12 李华的双十一
程序员李华双十一帮女朋友清了购物车,但是场面太过惨烈以至于他都不愿意回忆起那个数字,你能帮他回忆一下吗?
用winhex打开发现又是伪加密,改下09为00,注意有两个文件所有存在2个伪加密哟。
解压得到一个money.zip的压缩包和一个singledog.mp3,将money.zip拖进ARCHPR中暴力破解得到密码00015398。
使用密码解压后得到一个嘲讽。
使用winhex打开password.txt发现莫尔斯电码。
对应电码表得到密码BOY1111,使用MP3Stego对singledog.mp3进行解密得到singledog.mp3.txt。
打开后得到base64密文字符串
解密得到flag
0x13 李华的疑惑
下载得到压缩包,解压后得到password.txt文档打开后发现好多255。
使用Visual Studio Code打开,看个人喜好,发现总共有22500行255
每一行都是RGB值,这个是RGB转换成图片,共有22500行。通过对整数的分解可以得到22500=150x150=100x225=225x100
from PIL import Image
x = 150 #x坐标
y = 150 #y坐标
im = Image.new("RGB",(x,y))#创建图片
f = open('password.txt') #打开rbg值文件
#通过一个个rgb点生成图片
for i in range(0,x):
for j in range(0,y):
line = f.readline()#获取一行
rgb = line.split(",")#分离rgb
im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
im.show()
运行后得到key值
解压输入对应密码得到base64加密字符串
使用AES(ECB 256)解密后得到flag
moctf{D0_You_1ik3_tO_pAinH_wi4h_pi8e1}