202405_Misc3_Grid'sSecrets
tags:二维表格解密
,Grid
0x00. 题目
OL79BXOL79CXOL79FXOL79GXOL79JXOL79KXOL79MXOL79NXOL79RXOL79SXOL79XXOL78BWOL78CWOL78FWOL78GWOL78HWOL78JWOL78KWOL78LWOL78MWOL78OWOL78PWOL78RWOL78UWOL78VWOL78XWOL88CVOL88DVOL88FVOL88JVOL88KVOL88MVOL88PVOL88RVOL88SVOL88VVOL89BUOL89CUOL89FUOL89HUOL89JUOL89KUOL89MUOL89NUOL89OUOL89RUOL89SUOL89UUOL79CTOL79DTOL79GTOL79HTOL79JTOL79KTOL79PTOL79RTOL79STOL79VTOL78BSOL78DSOL78ESOL78FSOL78GSOL78HSOL78KSOL78LSOL78NSOL78RSOL78SSOL78USOL78VSOL78WSOL88BROL88CROL88FROL88JROL88LROL88MROL88NROL88OROL88PROL88RROL88TROL88VROL88WROL89BQOL89EQOL89JQOL89NQOL89OQOL89RQOL89SQOL89TQOL89UQOL89VQOL89XQOL79BPOL79CPOL79FPOL79GPOL79JPOL79KPOL79MPOL79NPOL79RPOL79SPOL79XPOL78BOOL78COOL78FOOL78GOOL78HOOL78JOOL78KOOL78LOOL78MOOL78OOOL78POOL78ROOL78UOOL78VOOL78XOOL88CNOL88DNOL88FNOL88JNOL88KNOL88MNOL88PNOL88RNOL88SNOL88VNOL89BMOL89CMOL89FMOL89HMOL89JMOL89KMOL89MMOL89NMOL89OMOL89RMOL89SMOL89UMOL79CLOL79DLOL79GLOL79HLOL79JLOL79KLOL79PLOL79RLOL79SLOL79VLOL78BKOL78DKOL78EKOL78FKOL78GKOL78HKOL78KKOL78LKOL78NKOL78RKOL78SKOL78UKOL78VKOL78WKOL88BJOL88CJOL88FJOL88JJOL88LJOL88MJOL88NJOL88OJOL88PJOL88RJOL88TJOL88VJOL88WJOL89BIOL89EIOL89JIOL89NIOL89OIOL89RIOL89SIOL89TIOL89UIOL89VIOL89XIOL79BHOL79CHOL79FHOL79GHOL79JHOL79KHOL79MHOL79NHOL79RHOL79SHOL79XHOL78BGOL78CGOL78FGOL78GGOL78HGOL78JGOL78KGOL78LGOL78MGOL78OGOL78PGOL78RGOL78UGOL78VGOL78XGOL88CFOL88DFOL88FFOL88JFOL88KFOL88MFOL88PFOL88RFOL88SFOL88VFOL89BEOL89CEOL89FEOL89HEOL89JEOL89KEOL89MEOL89NEOL89OEOL89REOL89SEOL89UEOL79CDOL79DDOL79GDOL79HDOL79JDOL79KDOL79PDOL79RDOL79SDOL79VDOL78BCOL78DCOL78ECOL78FCOL78GCOL78HCOL78KCOL78LCOL78NCOL78RCOL78SCOL78UCOL78VCOL78WCOL88BBOL88CBOL88FBOL88JBOL88LBOL88MBOL88NBOL88OBOL88PBOL88RBOL88TBOL88VBOL88WBOL89BAOL89EAOL89JAOL89NAOL89OAOL89RAOL89SAOL89TAOL89UAOL89VAOL89XA
0x02. WP
分析代码
- 查看文件,发现空白行,尝试进行零宽度字符隐写解码,得到hint信息
4invaild
- 清除不可见字符后,按6位长度分组,并取每个字符串的第5、6位,得到由字母组成的坐标系
- 构建二维表格
- 拼接后进行二进制解码
- 对字符串循环截尾处理
EXP
#coding:utf-8
import pandas as pd
import libnum
with open("misc-3_secrets.txt","r") as f:
cipher = f.read()
points=[]
for i in range(0,len(cipher),6):
points.append(cipher[i+4:i+6])
print(points)
df = pd.DataFrame(0,index=range(24),columns=range(24),dtype=int)
for p in points:
x = ord(p[0])-ord('A')
y = ord(p[1])-ord('A')
df.iloc[x,y]=1
print(df)
tflag=""
for y in range(24):
for x in range(24):
tflag+=str(df.iloc[x,y])
tflag=libnum.b2s(tflag)
print(tflag.decode("utf-8"))
flag=" "
for i in range(0,len(tflag),3):
flag=tflag[i:i+3].decode("utf-8")+flag
print(flag)
# flag{M4idenh3ad_4nd_VHF}flag{M4idenh3ad_4nd_VHF}flag{M4idenh3ad_4nd_VHF}