BUUCTF:https://buuoj.cn/challenges
题目描述:
得到的 flag 请包上 flag{} 提交。
密文:
下载附件,解压得到flag.txt文件。
解题思路:
1、打开flag.txt文件,内容如下。
Q2V0dGUgbnVpdCwK SW50ZW5hYmxlIGluc29tbmllLAp= TGEgZm9saWUgbWUgZ3VldHRlLAo= SmUgc3VpcyBjZSBxdWUgamUgZnVpcwp= SmUgc3ViaXMsCt== Q2V0dGUgY2Fjb3Bob25pZSwK UXVpIG1lIHNjaWUgbGEgdOmUmnRlLAp= QXNzb21tYW50ZSBoYXJtb25pZSwK RWxsZSBtZSBkaXQsCo== VHUgcGFpZXJhcyB0ZXMgZGVsaXRzLAp= UXVvaSBxdSdpbCBhZHZpZW5uZSwK T24gdHJh5Y2vbmUgc2VzIGNoYeWNr25lcywK U2VzIHBlaW5lcywK SmUgdm91ZSBtZXMgbnVpdHMsCm== QSBsJ2Fzc2FzeW1waG9uaWUsCl== QXV4IHJlcXVpZW1zLAr= VHVhbnQgcGFyIGRlcGl0LAq= Q2UgcXVlIGplIHNlbWUsCt== SmUgdm91ZSBtZXMgbnVpdHMsCp== QSBsJ2Fzc2FzeW1waG9uaWUsCp== RXQgYXV4IGJsYXNwaGVtZXMsCo== Sidhdm91ZSBqZSBtYXVkaXMsCl== VG91cyBjZXV4IHF1aSBzJ2FpbWVudCwK TCdlbm5lbWksCu== VGFwaSBkYW5zIG1vbiBlc3ByaXQsCp== RumUmnRlIG1lcyBkZWZhaXRlcywK U2FucyByZXBpdCBtZSBkZWZpZSwK SmUgcmVuaWUsCq== TGEgZmF0YWxlIGhlcmVzaWUsCh== UXVpIHJvbmdlIG1vbiDplJp0cmUsCo== SmUgdmV1eCByZW5h5Y2vdHJlLAp= UmVuYeWNr3RyZSwK SmUgdm91ZSBtZXMgbnVpdHMsCn== QSBsJ2Fzc2FzeW1waG9uaWUsCq== QXV4IHJlcXVpZW1zLAp= VHVhbnQgcGFyIGRlcGl0LAq= Q2UgcXVlIGplIHNlbWUsCo== SmUgdm91ZSBtZXMgbnVpdHMsCm== QSBsJ2Fzc2FzeW1waG9uaWUsCl== RXQgYXV4IGJsYXNwaGVtZXMsCm== Sidhdm91ZSBqZSBtYXVkaXMsCu== VG91cyBjZXV4IHF1aSBzJ2FpbWVudCwK UGxldXJlbnQgbGVzIHZpb2xvbnMgZGUgbWEgdmllLAp= TGEgdmlvbGVuY2UgZGUgbWVzIGVudmllcywK U2lwaG9ubmVlIHN5bXBob25pZSwK RGVjb25jZXJ0YW50IGNvbmNlcnRvLAq= SmUgam91ZSBzYW5zIHRvdWNoZXIgbGUgRG8sCo== TW9uIHRhbGVudCBzb25uZSBmYXV4LAp= SmUgbm9pZSBtb24gZW5udWksCo== RGFucyBsYSBtZWxvbWFuaWUsCl== SmUgdHVlIG1lcyBwaG9iaWVzLAq= RGFucyBsYSBkZXNoYXJtb25pZSwK SmUgdm91ZSBtZXMgbnVpdHMsCv== QSBsJ2Fzc2FzeW1waG9uaWUsCn== QXV4IHJlcXVpZW1zLAp= VHVhbnQgcGFyIGRlcGl0LAo= Q2UgcXVlIGplIHNlbWUsCm== SmUgdm91ZSBtZXMgbnVpdHMsCp== QSBsJ2Fzc2FzeW1waG9uaWUsCm== RXQgYXV4IGJsYXNwaGVtZXMsCu== Sidhdm91ZSBqZSBtYXVkaXMsCm== VG91cyBjZXV4IHF1aSBzJ2FpbWVudCwK SmUgdm91ZSBtZXMgbnVpdHMsCn== QSBsJ2Fzc2FzeW1waG9uaWUgKGwnYXNzYXN5bXBob25pZSksCn== Sidhdm91ZSBqZSBtYXVkaXMsCt== VG91cyBjZXV4IHF1aSBzJ2FpbWVudA==
2、经过base64编码的数据很多,感觉不是普通的base64解密,尝试base64隐写,得到flag。
使用如下Python脚本进行解密。
base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" binstr="" strings = open('./base64.txt').read() e = strings.splitlines() for i in e: if i.find("==") > 0: temp = bin((base64.find(i[-3]) & 15))[2:] # 取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符 binstr = binstr + "0" * (4 - len(temp)) + temp # 二进制字符补高位0后,连接字符到binstr elif i.find("=") > 0: temp = bin((base64.find(i[-2]) & 3))[2:] # 取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符 binstr = binstr + "0" * (2 - len(temp)) + temp # 二进制字符补高位0后,连接字符到binstr str = "" for i in range(0, len(binstr), 8): str = str + chr(int(binstr[i:i + 8], 2)) # 从左到右,每取8位转换为ascii字符,连接字符到字符串 print(str)
3、运行Python脚本,得到flag。
flag:
flag{fazhazhenhaoting}