BUUCTF-MISC(1)

159 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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}