携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
[GXYCTF2019]SXMgdGhpcyBiYXNlPw==
下载完附件发现文本里如下字符串
Q2V0dGUgbnVpdCwK
SW50ZW5hYmxlIGluc29tbmllLAp=
TGEgZm9saWUgbWUgZ3VldHRlLAo=
SmUgc3VpcyBjZSBxdWUgamUgZnVpcwp=
SmUgc3ViaXMsCt==
Q2V0dGUgY2Fjb3Bob25pZSwK
UXVpIG1lIHNjaWUgbGEgdOmUmnRlLAp=
QXNzb21tYW50ZSBoYXJtb25pZSwK
RWxsZSBtZSBkaXQsCo==
在做CTF题目时遇到这种大量Base64编码的文本时,考虑Base64隐写。所以我们找一个脚本。
#解码base64隐写编码
#python版本 3.9
import base64
def int2Bin(digit):
return bin(digit)[2:] #将索引转成二进制,去掉'0b';
def binAsc(string): #二进制转成ASCII码
temp = ''
for i in range(int(len(string) / 8)):
temp += chr(int(string[i * 8 : i* 8 + 8] , 2))
return temp
def readBase64FromFile(filename):
Base64Char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" #Base64字符集 已按照规范排列
result = ''
with open(filename ,'r') as f:
for data in f.readlines():
if data.find('==') > 0:
result += int2Bin(Base64Char.index(data[-4]))[-4:] #根据隐写原理,‘==’情况取等号前最后一个字符转换后取后4位
elif data.find('=') > 0:
result += int2Bin(Base64Char.index(data[-3]))[-2:] #根据隐写原理,‘=’情况取等号前最后一个字符转换后取后2位
print(binAsc(result))
readBase64FromFile('flag.txt')
flag{fazhazhenhaoting}
[ACTF新生赛2020]swp
解压后发现附件是一个流量包,用wireshark分析一下,
追踪TCP流发现流太多了,简单看了一下也没有发现重要数据。这里的话个人学到了两种方法来分析。
1.使用binwalk分析,发现里面藏有压缩包,接着进行分离即可得到。
2.导出http数据,file->export objects->http,在导出的文件里可以发现压缩包。
接着我们看一下压缩包,需要密码,先尝试下是否是伪加密。用WINRAR修复一下发现可以打开。
flag{c5558bcf-26da-4f8b-b181-b61f3850b9e5}
[SWPU2019]你有没有好好看网课?
解压后发现flag2和flag3的压缩包。同时都需要压缩密码。先看flag2,没有发现什么。再看flag3,提示密码是6位数字,那么我们就用ar爆破一下。
得到flag3.zip密码为:183792
之后会得到一个docx和mp4文件。
文档里提示数字520与711,怀疑是mp4里的5:20,与7:11
查看后发现敲击码
..... ../... ./... ./... ../
与base编码
dXBfdXBfdXA=
合起来就是flag2的压缩密码
wllmup_up_up
之后将文件放进010直接就能看到flag
flag{A2e_Y0u_Ok?}
tips:这里逐秒查看的软件可以用:Kinovea /pr
[DDCTF2018](╯°□°)╯︵ ┻━┻
题目给了一串编码
d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd
没有解开,怀疑有什么规律。尝试对每两个字符转出来的 10进制 进行减 128 ,每个值得范围就能落在 ASCII 码表。
我们从网上找一个脚本。
# -*- coding:utf-8 -*-
import re
import urllib
list1=[]
list2=[]
s = "d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd"
print len(s)
result=re.sub(r"(?<=\w)(?=(?:\w\w)+$)"," ", s)
print result
urlencode_s="%"+result.replace(" ","%")
print urlencode_s
hex_s = "0x"+result.replace(" ","0x")
print hex_s
print hex_s[-4:8]
list_hex = []
for i in range(len(hex_s)):
if((i+1)%4==0):
print hex_s[(i-3):(i+1)]
list1.append(hex_s[(i-3):(i+1)])
print i
else:
print i
continue
print list1
for i in list1:
list2.append(int(i,16))
print list2
print 253-125
list3=[]
print len(list2)
for i in range(67):
list3.append(chr(int(list2[i])-128))
s = "".join(list3)
print s
DDCTF{922ab9974a47cd322cf43b50610faea5}