flag.rar解压,拿到一个加密压缩包和hint.txt
    hint.txt提示不要看文件尾,010 editor打开后看到后面有个zip
    image.png
    提取出来,解压出来一个passwd.txt,

    1. M3E1),$Y4631.:E4Q3E1::DY$63!-:E4R3D11,TY$57I.1U$S6511,DYM43%/
    2. M5$UY37I1,D]457A.;4EZ351:;4Y'23%.>E$U37IK,%E4635.1%DS6515,TYM
    3. M23!:5%)M3E11,4Y$37A.1TTQ36I->$YJ8WI-1%)M3D19>D]447I.5%4P37I9
    4. M-$YM53)->E$P3E=%,5E4531.;44Q351C>$Y423-95$UX3GI1,$]453-.5$DP
    5. M3T15,TYM23!/5%IH3FI%,$Y447E.5&LP66I5,TUZ:S--1%5X3D11,EEJ37A.
    6. M1U%Z351C>DUZ43)-:DUX3GIC>DY453!.,D4P6E11-$Y463)/5%9H3D=1,%I$
    7. M37=.5$4S3419>4YM33!-5&,T3D=-,$YZ6FE.;54P6D1D:$Y$:S--:E5X3C)%
    8. M>DY467I.5$DP37IC=TYM53).1%4S3D1),$UZ53!->DDP3U1:;4Y'43%.5%DP
    9. M37I%,4UZ53-.>D$P6D15>4XR13-.>EIL3E15,$Y443%->EDR3515,4Y$:WI-
    10. M:E)K3FU%,$YJ4FI.5T4P3FI2:$Y49S%-:F,U3D19,DY44FU.;4DP6E11>DYJ
    11. M23!.:E)H3FU),$]453%.1U4R67I5,4UZ23)/1%DP3E1!,$Y467I->D4Q37IC
    12. I-4YZ8WI-:E5W3D15,EEZ47I.1TTP3D1C,$Y$9S%->E5X33)1>EI!/3T`
    13. `

    解密:UUdecode->base64->hex->base64->base85->base62->base32->base64
    拿到提示:

    1. passwd not here,and:why i use the rar?

    百思不得解,为什么要用rar,后来看了wp才知道WinRAR是支持NTFS数据流压缩的,如果使用不支持NTFS数据流压缩的软件进行解压,会丢失隐藏的数据。
    使用NtfsStreamsEditor扫描,得到一个新的压缩包,但是也有密码,不过是弱口令,密码是1234。
    解压后得到密码:w0w_n9-9-i^y,再去解压flag in it.rar。
    得到一个png图片,但是stegsolve加载时报错,wp中说根据提示RGB and no Adam,要修改两个位置的值:
    糊图图 - 图2
    不知道原理是什么,不过010 editor加载时报错crc校验失败,盲猜一个原理是需要计算crc来的。
    修改完后用脚本提取出所有像素点:

    1. import zlib
    2. import binascii
    3. from PIL import Image
    4. pic = Image.open("output.png")
    5. strtxt = open('c.txt','a')
    6. width,height = pic.size
    7. for x in xrange(width):
    8. for y in xrange(height):
    9. strtxt.write(str(pic.getpixel((x,y)))+'\n')
    10. strtxt.close()

    得到一堆用(64, 64, 0),(64, 64, 64),(128, 64, 128),(192, 128, 64)组成的RGB值:
    image.png
    题目提示为4进制,正好是四组RGB,那么对应关系就是

    1. (64, 64, 0)==0
    2. (64, 64, 64)==1
    3. (128, 64, 128)==2
    4. (192, 128, 64)==3

    写出脚本替换,并转成16进制:

    1. data = open('c.txt').read()
    2. sjz = data.replace('(64, 64, 64)', '1')\
    3. .replace('(192, 128, 64)', '3')\
    4. .replace('(64, 64, 0)', '0')\
    5. .replace('(128, 64, 128)', '2')\
    6. .replace('\n', '')
    7. str2 = hex(int(sjz, 4))[2:]
    8. with open('test','wb') as file:
    9. file.write(bytes.fromhex(str2))

    010 editor打开test,发现是zip文件,解压后得到ISCC.UPX文件
    用Ulead Photo Express 6打开文件,得到flag
    糊图图 - 图4