成功修复解压后,打开文件发现是 ELF 文件(Linux 中类似 Windows 的 exe 文件,可以直接执行)
直接 Linux 运行得 flag:
Class10
拿到一个没有后缀不知名文件。在 kali 里面用 file 命令检查一下:是个二进制文件
binwalk 分析一下:
有两段 zlib 压缩后的数据,第二段为 default compression。
然后 strings 命令分析:
发现 IHDR,RGB,IDAT 等和图像相关的字符。
用 binwalk 分理处 class10 中的压缩数据:
用 python 打开 zlib:
发现二进制的长度为 841,正好是 29^2。联系上面得到的信息,猜测应该是二进制转成图像。
写个 python 脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# -*- coding: utf-8 -*-
from PIL import Image
SIZE = 29 img = Image.new("RGB",(SIZE,SIZE)) withopen("./F4289") as f: str = f.read() i = 0 for y in xrange(SIZE): for x in xrange(SIZE): ifstr\[i\] == '0': img.putpixel(\[x,y\],(0,0,0)) else: img.putpixel(\[x,y\],(255,255,255)) i = i + 1 img.save("ima.png")
看别人写的wp是有一个 crc 校验值,然后可以反推高度宽度。但是由于 Windows 系统无视 crc 校验值(即 crc 校验值不对也可以显示,但是 Linux 就不可以)所以利用 Window 的特点可以达到修改图片高、宽度来隐藏信息的目的。
python 爆破:
1 2 3 4 5 6 7
for i inrange(16,256): printhex(i)\[2:\] b=hex(i)\[2:\] a=('89504E470D0A1A0A0000000D49484452000001'+b+'000001000802000000F37A5E12000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000072549444154785EEDDAB996DD380E0050E70E2B745491B3F9FFCF1B2D04454214A537AF8EDB5D736F262E00A807CAEEE507000000000000000000DFDCC7E77F569F1FE5F9EFF2F3D7EFADBCC54D85B1F2F7AF9F6564E0EF3E2CFC059A3B77185EAB729D0ECBC51AEE0E5B94E18AE64A96F9947194EBDEF5AE54458E76339DD53C75E129F35D90B2A13FF670F045FD516E4E128B6719F3618F0439F85794FF3FC5AF255665EB3EF16641702B7D410E6DF39DFB74B5F4EAE5EED51661B8A25E903A7B64BBCC3535DF35983D020E2B9C5FBDB2E57C8CC6BCE252519F6638F89AA8E4598C47ABD361DBB3F667FC82F217AFC51FFCB2ABB2A6CECE7F0C78D3E9261D6D5C7AAFE9EBB61B3F3E874D9E3B36760F1BB94C1E17E361AEE47657BBFF54E7B27B50407759EF945DD3227BA34FC278F03551FFB35262F52B19EB1BDAB479BEA0FCC50BF1E3A73CBFC7BCE6CD9A606E7093A23BB7A1DAD5779D18BBD2058EFDC37B5D2663EE3E57BD491FFBD275E1E30A8B1263585053C3C5FCA6965112A6733C90236CCE8365A468266A998B18EE17AF3E3F2E2A2DA5C6535F469242943DBF7F97028E439FCB3F6B3336F5366FEE71FC08D56E3EDB574D6B8277B57D5D447BAF43CF7A7515BBD2C20830DC5F26CBDC835CCDCDDB2C253EAF7033AD67D11EFE52BAD0A3B2F6894B39C2260DE6A831514FDC588F735ABF8CE63CFDF1E3695A6F0A7144887CF12A73AE919A31BE925544791AFF51EDB1EC6611BCE7D48DD1BCFB483CDDF7616EFA22E2B7EA92BEC71FE4EA8BEB86E615F665A41A0F83F82365595D54B7352E736C72844D3F385CB228E311BF9CAC2C8B73C66C0ED2CFC7D329472B85682394A912EDAAE056EC3EC78B81A7F1FBB936F2A61F9ED604EF4ADD57A566BDEFC3DCD6C5287EEAFC787C90ABBF499B6715E63206AB23D0229DE164504655C34C830C23F4834D3D8BBAB21F3EECE9E29CE99DD6DDFD7C3C0D0F1252883E4254B33EE55C23A38C6D8CE7F1FB5DC7BE2286CBBA6951F0A6D47D9BA6E7EA746DCB2BB9AD8BFE5634CA4433FE20577F9336CF2BDC0DD747F18B2761066534E6B3BBE19A3CD854B559276AF9D95E774CC72972C87E3E9E5E29F522C3F29C738D8C321E11D6A7A7F1633CA5CBDB57FBD8B42E78C7A8AF5BD1ADB75DD85F866AD4D6D5BEA74EDDE72A2BBAF9C715861C244ABC28726054C6613EBBBBBEEDB98AA3BAC532358F9E635C9D759F8FA769A929C4B9CAAEC287E76E16D5ED7D4DB7F14B5DEDCAC569FBBE6C5A14BC69D0D7BDA689BB355FF73F3C1D616F73E5AFC2E66ED732DF668F42CBDABA7B58E1582AE3E357933685BF12CBF27D1FD711452E73837A7FFEFA8C64CDC24DAA26658DD5D35ACB9E589333AC6A4DAB69B06365AE30069EC76F468FC579FBFE3CAD09DE156D376BB4DAE9BDB6D18F45FDE8A9AD3B65B29D9BE74A57BA9AEE8A123A35C4C5D671C1452A631462B67D374E7C1CED3C5FE6061BEBAED3EB4E8BE3BF90F76FE6483A5022C49AF10FDABCE369B0E16FB1BA3EC1E622FEF81DAE62FBBE715A13BC2BFAF3AED1CEFDDFF779EDE8343CBE154599CC73D7B9D295EE5CEFCA33EDF6F3AE625870712AA38F32DBDA49C9FB63A54F4417346D3CE662A2597DAC5DE2F7F3F1347C9F211D76906153D34C8335199BF3B5B15E8E5F27AA76C53E3BAD09FED5CA0DC837866F2BBE797FECBBB67FAC7D46F9C62EFF8AC1F7F4673FA3F52FBCFEA0E65B2BF7CA67F4FFC33FF119D55BF0CF69FEEDDDE1A54BF97E843FE66B4BBD8AF6C7FFA11E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080A11F3FFE0B3B73B0698B976EA80000000049454E44AE426082').decode("hex") f=open(b+'.png',"wb") f.write(a) f.close()
挨个查看得到 flag (眼力要好才能发现….):
上帝之音
根据提示用 MATLAB 查看时域波形(不太懂…通信内容..):几乎全看(chao)别人 wp
1 2
[x,fs\] = wavread('godwave.wav'); N = lenthg(x);
可以看出来这是 OOK 信号,因此可以先全波整流,然后低通滤波解调出基带信号。(dalaoshuo)
[x, fs\] = wavread('godwave.wav'); N = length(x); fc = fs / 100; lpf = fir1(30, fc / (fs / 2)); x = abs(x); xs = filter(lpf, 1, x); figure; plot(xs(1:1000)); ts = \[48:64:N\]; xb = int8(xs(ts) > 0.3); fp = fopen('demod.txt', 'w'); for i = xb fprintf(fp, '%d', i); end fclose(fp);
曼彻斯特解码 Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
withopen('demod.txt') as fp: s = fp.read()
m = '' for i inrange(0, len(s), 2): if (s\[i\] == '1') and (s\[i+1\] == '0'): m += '1' elif (s\[i\] == '0') and (s\[i+1\] == '1'): m += '0' else: print('wrong with index %d' % i) exit()
withopen('demod.bin', 'wb') as fp: for i inrange(0, len(m), 8): byte = bytes(\[int(m\[i:i+8\], 2)\]) fp.write(byte)