[BJDCTF 2nd]最简单的misc-y1ng
1、zip伪加密
2、补全png文件头
3、hex转ascii。
[BJDCTF 2nd]A_Beautiful_Picture
1、在linux下打不开,高被改了。
[BJDCTF 2nd]小姐姐-y1ng
1、jpg图片,HxD搜索关键字BJD。或者strings...
[BJDCTF 2nd]Real_EasyBaBa
1、jpg图片,对比其他jpg格式,发现中间有段字符,离远点好看。
[BJDCTF 2nd]EasyBaBa
1、foremost命令分离jpg图片
2、file命令或HxD查看文件类型,改后缀为.avi,用pr打开,一个4张二维码
3、hex转ascii。
[BJDCTF 2nd]圣火昭昭-y1ng
1、jpg图片属性,新与佛论禅解密,得到:
gemlovecom
2、outguess隐写:
outguess -k "gemlove" -r sheng_huo_zhao_zhao.jpg 1.txt
[WUSTCTF2020]alison_likes_jojo
1、在boki.jpg中发现zip,用binwalk命令分离
2、暴力破解后得到:
WVRKc2MySkhWbmxqV0Zac1dsYzBQUT09
3、base64 decode后得到:
killerqueen
4、jljy.jpg,outguess隐写
outguess -k "killerqueen" -r jljy.jpg out.txt
[WUSTCTF2020]爬
77637466323032307b746831735f31735f405f7064665f616e645f7930755f63616e5f7573655f70686f7430736830707d
hex转ascii。
[WUSTCTF2020]find_me
1、在jpg图片属性里发现盲文,用在线解密:https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=mangwen
[WUSTCTF2020]girlfriend
1、wav打开听都是电话音,用dtmf2num.exe可以破解
999*666*88*2*777*33*6*999*4*444*777*555*333*777*444*33*66*3*7777
2、到这儿,我连赛后的wp都没看懂(原因就是我我手机英文9键没打开)
手机英文9键解密,直接对着输数字就行
得到:
youaremygirlfriends
[NPUCTF2020]HappyCheckInVerification(未解完)
1、用file命令得知是zip,改后缀后解压失败,用winrar自带的修复工具也8行
发现zip文件尾被放在了开头(或者对zip熟悉的话,直接看开头是50 4B 05 06
),zip伪加密
2、用windows自带画图工具补全3个定位点,得到:
?flag{this_is_not_flag}三曳所諳陀怯耶南夜缽得醯怯勝數不知喝盧瑟侄盡遠故隸怯薩不娑羯涅冥伊盧耶諳提度奢道盧冥以朋罰所即栗諳蒙集皤夷夜集諳利顛呐寫無怯依奢竟#¥#%E68BBFE4BD9BE68B89E6A0BCE79A84E5A7BFE58ABFE59CA8E69C80E5908E32333333||254333254242254338254342254231254338254345254432254238254643254236254145254239254441254437254234254232254131254236254245253244253244254343254438254330254341254336254435...sadwq#asdsadasf faf(use)dasdasdafafa_(ba##se64)
与佛论禅解密,得到:
说了这不是佛拉格,你还来转?给爷爪巴
base16decode,得到:
拿佛拉格的姿势在最后2333
后面一串hex转ascii(发现这个base16解出来也是一样的),得到:
%C3%BB%C8%CB%B1%C8%CE%D2%B8%FC%B6%AE%B9%DA%D7%B4%B2%A1%B6%BE%2D%2D%CC%D8%C0%CA%C6%D5
urldecode(编码为gb2312),得到:
没人比我更懂冠状病毒--特朗普
整段最后提示use base64
3、GWPI_1.mp4
能听到2处电话音,视频转wav音频后,
但是我用dtmf2num.exe解这段是44807
第二段整不出来,这玩意太难了
[网鼎杯 2020 青龙组]虚幻2
hint:1. 汉信码 2. 图片要转转 3. 暴力修补
知识点
4个脚是定位点,圈出来的辅助定位点一圈是白的
题解
from PIL import Image
img = Image.open("file.png")
str = ''
for w in range(36):
for h in range(12):
rgb = img.getpixel((w,h))#取rgb值,发现都是255,0。255记1,0记0
str += '1' if rgb[0] == 255 else '0'
str += '1' if rgb[1] == 255 else '0'
str += '1' if rgb[2] == 255 else '0'
size = int(len(data)**0.5)#36
code = Image.new('RGB',(36,36))
i=0
for x in range(36):
for y in range(36):
if str[i] == '1':
code.putpixel((x,y),(255,255,255))
else:
code.putpixel((x,y),(0,0,0))
i+=1
code.show()
code.save('res.png')
得31*31规格的码,对照一下,不一样?整体逆时针旋转90度,得到:
后来看fz大佬的wp,那样不行,转转转不会那么简单随便
将res.png逆时针旋转180度,再左右翻转,感觉和前面文档的特征差不多,再改那个7*7的定位点
from PIL import Image
img = Image.open("res.png")
img = img.rotate(180) #逆时针180度
img = img.transpose(Image.FLIP_LEFT_RIGHT) #左右镜像
img.save('slip.png')
汉信码在线识别网站可能因为比赛扫的人太多停了
用中国编码app可以识别辽,呜呜呜
[GKCTF2020]code obfuscation
hint:压缩包密码是加密过的
1、用win自带画图工具把缺少的黑色填好
2、binwalk分离(png)出加密rar
base16、32、36(不会)、58、62、64、91(不会)、92(不会)挨个试
base58:CfjxaPF解锁rar
3、在线js反混淆解得:
for n in 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 do eval An = "n"
done
for n in 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 do eval An = "n"
done
num = 0
for n in a b c d e f g h i j do eval Bn = "n"
num =
$((num + 1)) done alert(
"Bk=' ';
Bm='"';
Bn='#';
Bs=' (';
Bt=')';
By='.';
Cb=';';
Cc=' < ';
Ce=' > ';
Cl='_ ';
Cn=' {';
Cp='}';
Da='0 ';
Db='1 ';
Dc='2 ';
Dd='3 ';
De='4 ';
Df='5 ';
Dg='6 ';
Dh='7 ';
Di='8 ';
Dj='9 ';
")
对着上面这写出来就行了
[NPUCTF2020]碰上彩虹,吃定彩虹!
题目给了maybehint.txt、lookatme.txt、secret。不过,secret不知道是什么类型的file。
maybehint.txt
零宽空格(zero-width space, ZWSP)用于可能需要换行处。
Unicode: U+200B HTML:
零宽不连字 (zero-width non-joiner,ZWNJ)放在电子文本的两个字符之间,抑制本来会发生的连字,而是以这两个字符原本的字形来绘制。
Unicode: U+200C HTML:
零宽连字(zero-width joiner,ZWJ)是一个控制字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果。
Unicode: U+200D HTML:
这里只用了3种零宽字符,在线工具解得:do u know NTFS?
2、ntfs
3、有重复字符较明显,用脚本进行词频分析,得到:ZW5jcnlwdG8=
4、base64解得:encrypto
百度encrypto,这还是一款文件加密工具,使用 AES-256 加密,高安全性高,能设置密码,也能加密码提示信息,用Encrypto加密后的文件会重新包装为.crypto,必须用Encrypto才能打开。
lookatme.txt
1、用记事本打开lootatme.txt,全选,手敲下Tab、空格,就能懂后半部分是Tab和空格的组合,Ctrl+H,空格替换为.,Tab替换为-,莫斯解码(得到autokey)
2、搜篇github上的break_autokey
python break_autokey.py
这iamthepasswd密码解不开。。。
3、用string命令看看,发现(Oh! You caught me! But...)完全没用,将其删除,nice~~,得到彩虹.png
4、foremost分离彩虹.png得到一个加密zip
5、6种黄色不一样,用GIMP提取颜色信息,选择颜色拾取工具,Shift,hex值最后2位不一样:70、40、40、73、57、64,hex->ascii:p@ssWd
6、解压得到弗拉格.docx,一堆堆小写字母中间夹了几个大写字母ALPHUCK,而且小写字母都是epacisjz这7个
7、百度ALPHUCK,Alphuck在线解码
[UTCTF2020]docx
在wordmedia目录下有一堆png,按大小排序。
[UTCTF2020]sstv
打开RX-SSTV工具,点击recerving,播放音频,flag一会就显示出来了。
[INSHack2017]hiding-in-plain-sight
1、foremost。
[INSHack2019]gflag
1、
文件内是3D打印命令
后缀改为.gcode
http://gcode.ws
还有一个网站https://ncviewer.com
[QCTF2018]picture
1、带key的lsb隐写:
python lsb.py extract attachment.png out.txt wwjkwywq
2、打开out.txt,发现是DES,再用大佬的脚本解密。
[BSidesSF2020]mini-matroyshka
在kali下base64decode
cat flag.txt | base64 -d > 1
cat 1 | base64 -d > 2
cat 2 | base64 -d > 3
hex->ascii,base64decode,hex->ascii,base64decode,hex->ascii,hex->ascii,得到:
o110, o064, o163, o111, ...
octal->ascii:
f = open('6').read()
f = f.replace('o', '').split(', ')
s = ''
for i in f:
s += chr(int(i, 8))
with open('7', 'w') as f_:
f_.write(s)
base64decode,base64decode,hex->ascii,base64decode,urldecode,base85decode
import base64
f = open("10",'r').read()
print(base64.b85decode(f))
decimal->ascii:
f = open('11').read()
f = f.replace(' ', ', ').split(', ')
s = ''
for i in f:
s += chr(int(i))
with open('12', 'w') as f_:
f_.write(s)
base64decode,base64decode,摩斯解码得到:
KFKUUNSXKRUFIUCTKZ3VI6SCG5MGYZZSKQYDS4TFGJXTAT2EKF2FKMDMNRIFKTJSJFLUUU2MLBFHUSTKHFLE6MTDG5RFMTRZKZCFSMTBNVITCUJSOA3GK3JZOVIVGRRXKZMFEV2OKRKXSYZTIVWVIQZRI5MGYVSJJNWXQSCTNVNGUS3KLIZE66KOGBSUQ2CYMJLVMM2QK5WEOYKHJZTFS6TUJJJG2SJTKFLE44KJGJYEYU3OKF4E2MLMMZLUKWSJJJCXI5KJPJNGWWKYJJIE2RKRNJRDA5ZUJFMEERSYPIYTEZSHPB4E2V2BOJNFMOJQKRWXA4SOKRDE6SSTOQ2FIR2CIRRTGSSLJJMFEUSSK5WFQVKEKEVVK3LMOFLFMZBQK5XHQVSUJA2UCUKTKZXUSM2CIJJFIQRVKFCXQOCNKZTTSTRTJJUFG2KNNVQVOQLNMVKFMN2WNF2FOZCDGFMU43CWGNGTGULULAZEUMKJKRSGQTTLKJDGKRSWNVRG2SLMLJLWYUKQPFGTQZDNN4ZVI3JVNRKVIQSPKZDXAMCYGNKSWUKXJE4FCVBRNNNEIQTMMFEFSNCRKRLGKVRSJI3VURSKPBLDGMJTJJLVCN22KRFE4S2GGVCU4VBYOFJFOY3NKMZWI6KSK5NGWUKIKJ3FOVS2MZSFMWTYKVDXI4KKKVWFMV2TNRXGCV2ZPFHEOWLKKZCXA6SXNFNEYUTKGF2GMWCSHBSFKNKHKZLFMSSSKY4XOZKDM4VU4RCSORKDCZCJKB4XA6S2IVNDOZCINB2U2WC2NJJDAUSTLAYWY22ZKNYDIZCGHFDFK3LILBSTESTWLFKXAOC2I5UEUZDOGRWE46KGORRVKUTJLJKHIUCWIZYDOTSYJZCFUVZZPBSDA2ZPJNWGIZ2OGNAXEY3LJJKGMRSCNBNFO6DRMJ4VETKSKZBHSYTKORJGGMSWLFGFKQSOLBWDSMCTNJ2HIURQOBWGK3KKNFKFK3DYKNWVUUCJGJSDMVSEKJHVKU3LNRNDEOLFKAZFC32NKZXWUTJSNB3VO2TYJRLUKQTLKBME4UKKKY4G2TCUHFZU6SCBPJKDCQLKMJCXI2LBKVLGYUBSKIVVS6JRJZJEI2DIJJCGY52LNJWFMU2FOBCUW6LQINRTARSHKB5HI2KOLBLDOZCIMRVVMSDENJSEI2DQJ4ZFCOKPLAYVSVCVGV3US6SCHFKTCVTKLEYHG3CJK5DDETT2KZSWMWDQINMXS3ZQKYZVK6KSGNITOSJRGVDVURLEOJIFKZDBLFCUCNCOKRAXOTKEIE6Q====
base32decode,base64decode得到:
ABzY8S=%pO0{X6OOk{j484-SIe=C6!bR-rs&?U;g;mS}T66jd5CjzzonA!{UtV552sq&L-FUHlGJfc6v;#txxWmew=iFhc_c;IFb7ASj#jKJt13Y_XFH(Kn#6darO0D#oL8!pE_=v|lq1`+e_tNjk51N%+xL`CsrJ%tQEiWP4>RijUWtZ|UL~@A%h#pAE0y@L|1X=7raJ#&i`&y5{V+Vt-X6Uw3t-_bu!7a6DExUfnb%eiP?#<vj7NneQ0NTjt_u>Ab<A=dd0ehv8A5^Wb{dRqW}w%d;e2M(^D5?*Eg&KwrEfd@toYV_uVqPkj%IUY)gif24f#TJsZ&KF=m}t|uNFUUIE_px(>44mOWH?*sdF{txn1vcGDR_Yda*xt_ERhW{boaJ|dhIv~%7!mqDbe;OTZ{5sCeoqwI?*W`7p+rBS|Paeljo)LEPrn;QseX-@M_tJ;mGJezbbMIqJfO#gzT4NQ)%go?d(1Z#3hpZ<KX@d=sP%_&-?l8p3OP#lKbiEe?d~c-MD8a$9p9UHJD+BsAF?;b5u{twdTwct8i;d=9}XMNp#0}SUccK%!av75}zBc*4Wu2Gt;#FdGk=GZ`@850000
base85decode:
import base64
f = b'ABzY8S=%pO0{^X6OOk{j484-SIe=C6!bR-rs&?U;g;mS}T66jd5CjzzonA!{UtV552sq&L-F^UH*lGJfc*6v;#txxWmew=iFhc_c;IFb7ASj#jKJt13Y_XFH$Kn#6darO0D#oL8!pE_=v|lq1`+e_tNjk51N%+xL`CsrJ%tQEiWP4>RijUWtZ|UL~@A%h#pAE0y@L|1X=7raJ#&i`&y5{V+Vt-X6Uw3t-_bu!7a6DExUfnb%eiP?#<vj7NneQ0NTjt_u>Ab<A=dd0ehv8A5^Wb{dRqW}w%d;e2M(^D5?*Eg&KwrEfd@toYV_uVqPkj%IUY)gif24f#TJsZ&KF=m}t|uNFUUIE_px(>44mOWH?*sdF{txn1vcGDR_Yda*xt_ERhW{boaJ|dhIv~%7!mqDbe;OTZ{5sCeoqwI?*W`7p+rBS|Paeljo$LEPrn;QseX-@M^_tJ;mGJezbbMIqJfO#gzT4NQ)%go^?d(1Z#3hpZ<KX@d=sP%_&-?l8p3OP#lKbiEe?d~c-MD8a$9p*9UHJD+*BsAF?;b5u{twdTwct8i;d=9}XMNp#0}SUccK%!av75^}zBc*4Wu2Gt;#^FdGk=GZ`@850000'
res = open('16', 'wb')
res.write(base64.b85decode(f))
base64decode,hex->ascii,decimal->ascii,base85decode,摩斯解码,base32decode。
[MRCTF2020]不眠之夜
一共120张小图,each piece is 200x100 pixels,猜测大图是2000*1200像素(宽:10个小图,高:12个小图)
先用montage命令合成:
按顺序拼成x轴M块,y轴N块,输出文件为out.jpg:
montage *.jpg -tile MxN -geometry +0+0 out.jpg
montage *.jpg -tile 10x12 -geometry +0+0 out.jpg
再用gaps恢复:
gaps --image=out.jpg --size=200
(--size是小图的宽)