哔哔两句:鹤壁杯打的好不好,一定程度上取决于你的搜索引擎用的好不好。
经典re选手解密码和杂项,感觉密码会rsa就掌握半壁江山了。
Misc
1.pdf
这个题直接wbstego4(该软件可以吧文件隐藏到BMP、TXT、HTM、PDF中)一把梭
2. check.png
lsb隐写,没啥可说的,直接提取出对应的html编码,红帽子解码就行
3. 看似图片实则流量
Ziperello爆破,直接出密码。查看图片,显示图片出错了,猜测改了图片,010打开。
我高看他了,这个照片的内容就跟流氓一样。(我还搜了一下flag)
这里要提一嘴,winhex跟010editor打开的结果不同,winhex正常,010editor抽风
winhex正常打开,看看是不是改高了,tweakpng,发现crc有问题,可以确定是改了图片。
脚本一把梭,直接出修复好的
#coding=utf-8
import zlib
import struct
#读文件
file = 'H:/1.png' #注意,1.png图片要和脚本在同一个文件夹下哦~
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = 0xC61C9FAA
#crc32key = 错误的crc即可#补上0x,copy hex value
#data = bytearray(b'\x49\x48\x44\x52\x00\x00\x02\xA7\x00\x00\x01\x00\x08\x06\x00\x00\x00') #hex下copy grep hex
n = 4095 #理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
for w in range(n):#高和宽一起爆破
width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x+4] = width[x]
data[x+8] = height[x]
#print(data)
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print(width,height)
#写文件
newpic = bytearray(fr)
for x in range(4):
newpic[x+16] = width[x]
newpic[x+20] = height[x]
fw = open(file+'.png','wb')#保存副本
fw.write(newpic)
fw.close
我一看,要我老命,给的不是flag,给的百度网盘,继续看。
下载,流量包。这才是真正要做的。。。。
出了流量包就跟我没关系了,丢给队内的web师傅,师傅给ak了。
等学会了流量分析,专门出一个文章。
Crypto
1. easy_crypto
经典富强民主文明和谐,直接网站(CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码)一把梭
2. 混合加密
这个题挺变态的,但是这个是原题。
首先打开是下面这些:
4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35
大佬提供技巧:看到字母部分是n到r,找编码让它对应到a到f就可以(也就是rot13)
4B595954494D32515046324757595A534E52415653334357474E4A575955544E4B5A4D46434F4B59474253464D5A444E4D51334557524B5A4F424944473542554B595A44534B324E49565746515532464B49345649564B464E4E494543504A35
16转文本(这里其实也就是BASE16)
脚本如下:
h = "4B595954494D32515046324757595A534E52415653334357474E4A575955544E4B5A4D46434F4B59474253464D5A444E4D51334557524B5A4F424944473542554B595A44534B324E49565746515532464B49345649564B464E4E494543504A35"
for i in range(0,len(h),2):
tem='0x'+h[i]+h[i+1]
tem=int(tem,base=16)
print(chr(tem),end='')
KYYTIM2QPF2GWYZSNRAVS3CWGNJWYUTNKZMFCOKYGBSFMZDNMQ3EWRKZOBIDG5BUKYZDSK2NIVWFQU2FKI4VIVKFNNIECPJ5
base32
V143Pytkc2lAYlV3SlRmVXQ9X0dVdmd6KEYpP3t4V29+MElXSER9TUEkPA==
base64
W^7?+dsi@bUwJTfUt=_GUvgz(F)?{xWo~0IWHD}MA$<
base85(全是base家族,这不得看看是不是base85)
这里真的是get到一个新软件CyberChef_v9.32.3
点击就送(因为加了混淆了,要改一改字母表)
这里说一下CyberChef这个软件,在recipe中,下面的会以上面的输出作为输入进行编码。To是编码、From是解码。