前言
Buuctf Web 是一个在线安全挑战平台,旨在提高参与者对网络安全的理解和实践能力。本文将详细介绍 Buuctf Web 的特点、挑战和机遇,帮助读者更好地了解这一领域。
一、Buuctf Web 的特点
多样化的挑战场景:Buuctf Web 提供了多种挑战场景,包括 Web 利用、密码破解、CTF 夺旗等,涵盖了网络安全领域的各个方面。
高质量的学习资源:平台提供了丰富的学习资源,包括视频教程、文章、案例分析等,帮助参与者提高技能水平。
实时排名和互动交流:Buuctf Web 支持实时排名和互动交流功能,参与者可以在平台上与其他选手一起讨论问题、分享经验。
二、Buuctf Web 的挑战
技术难度高:网络安全领域涉及的知识面广泛,技术难度较高,需要参与者具备较高的技术水平和学习能力。
时间压力大:在 CTF 夺旗等挑战中,时间是非常宝贵的资源,需要在有限的时间内快速定位问题并找到解决方案。
需要团队协作:在某些挑战中,需要团队协作才能更好地完成任务,如何有效地分工和协作也是一大挑战。
三、Buuctf Web 的机遇
提高技能水平:通过参与 Buuctf Web 的挑战,参与者可以不断提高自己的技能水平,增强在网络安全领域的竞争力。
拓展人脉资源:在平台上与其他选手交流互动,可以结识志同道合的朋友,拓展人脉资源。
获得实践机会:Buuctf Web 的挑战场景都是基于真实场景设计的,参与者在挑战中可以获得宝贵的实践机会。
为未来的工作做好准备:对于那些希望在未来从事网络安全相关工作的参与者来说,参与 Buuctf Web 可以为他们未来的工作做好准备。通过参与 Buuctf Web 的挑战,他们可以了解行业最新的动态和技术趋势,提高自己的职业竞争力。
四、如何参与 Buuctf Web 的挑战?
注册账号:首先需要在 Buuctf Web 平台上注册一个账号。
选择挑战场景:根据自己的兴趣和需求选择相应的挑战场景。
学习相关知识:为了更好地完成挑战,需要提前学习相关知识,如 Web 安全、密码学等。
参与挑战:按照挑战的要求完成相应的任务,与其他选手竞争排名。
交流与分享:在平台上与其他选手交流经验、分享技巧,共同提高技术水平。
总结:Buuctf Web 作为一个在线安全挑战平台,为网络安全爱好者提供了一个学习和交流的平台。通过参与 Buuctf Web 的挑战,不仅可以提高自己的技能水平,还可以拓展人脉资源、了解行业动态并为未来的工作做好准备。希望本文的介绍能帮助读者更好地了解 Buuctf Web 的特点、挑战和机遇,为未来的发展做好准备。
一、[ACTF新生赛2020] base64隐写(Base64 解码)
点击链接下载文件
打开后有一个 txt,-推测为 Base64 编码
编写 Python 脚本解码每一行
def get_base64_diff_value(s1, s2): base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' res = 0 for i in xrange(len(s2)): if s1[i] != s2[i]: return abs(base64chars.index(s1[i]) - base64chars.index(s2[i])) return res def solve_stego(): with open('ComeOn!.txt', 'rb') as f: file_lines = f.readlines() bin_str = '' for line in file_lines: steg_line = line.replace('\n', '') norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '') diff = get_base64_diff_value(steg_line, norm_line) print diff pads_num = steg_line.count('=') if diff: bin_str += bin(diff)[2:].zfill(pads_num * 2) else: bin_str += '0' * pads_num * 2 print goflag(bin_str) def goflag(bin_str): res_str = '' for i in xrange(0, len(bin_str), 8): res_str += chr(int(bin_str[i:i + 8], 2)) return res_str if __name__ == '__main__': solve_stego()
拿到 flag
flag{6aseb4_f33!}
二、[GXYCTF2019] gakki(Binwalk 提取 & Archpr 爆破 & 字频统计)
点击链接下载文件
打开后是一张图片
使用 Binwalk 发现隐藏文件 RAR
解压缩需要密码
使用 Archpr 爆破出密码
打开后发现是乱码,emm……
补充知识:大量无规律、无特征字符应该是要做字频统计
编写 Python 脚本
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]" strings = open('./flag.txt').read() result = {} for i in alphabet: counts = strings.count(i) i = '{0}'.format(i) result[i] = counts res = sorted(result.items(),key=lambda item:item[1],reverse=True) for data in res: print(data) for i in res: flag = str(i[0]) print(flag[0],end="")
执行结果如下:
PS C:\Users\Administrator\Downloads\attachment\output\rar\00000268> python .\count.py ('G', 2508) ('X', 2481) ('Y', 2453) ('{', 2301) ('g', 2221) ('a', 2087) ('k', 1981) ('i', 1797) ('_', 1531) ('I', 1448) ('s', 1402) ('M', 1398) ('y', 1389) ('w', 1386) ('1', 1376) ('f', 1373) ('e', 1372) ('}', 1264) ('A', 1164) ('D', 1164) ('O', 1163) ('Q', 1163) ('W', 1163) ('J', 1162) ('H', 1161) ('E', 1160) ('K', 1160) ('N', 1160) ('S', 1160) ('U', 1160) ('P', 1159) ('Z', 1158) ('8', 1158) ('&', 1158) ('*', 1158) ('B', 1157) ('C', 1157) ('2', 1157) ('4', 1157) ('9', 1157) ('#', 1157) ('%', 1157) ('^', 1157) ('F', 1156) ('R', 1156) ('T', 1156) ('V', 1156) ('3', 1156) ('@', 1156) ('$', 1156) ('(', 1156) (')', 1156) ('-', 1156) ('L', 1155) ('5', 1155) ('6', 1155) ('7', 1155) ('0', 1155) ('=', 1155) ('h', 1151) ('o', 1151) ('q', 1150) ('d', 1148) ('u', 1147) ('j', 1146) ('l', 1144) ('c', 1143) ('m', 1143) ('n', 1143) ('p', 1143) ('x', 1143) ('z', 1143) ('b', 1142) ('t', 1141) ('v', 1141) ('r', 1140) ('!', 1058) ('[', 4) (' ', 1) ('+', 0) ('\\', 0) (']', 0) GXY{gaki_IsMyw1fe}ADOQWJHEKNSUPZ8&*BC249#%^FRTV3@$()-L5670=hoqdujlcmnpxzbtvr![ +\]
推测 flag 应该就是:flag{gaki_IsMyw1fe}
三、[MRCTF2020] ezmisc(CRC 宽高 & WinHex 修改)
点击链接下载文件
解压缩后是这样一张图片
使用 Python 脚本宽高
import struct import binascii import os m = open("flag.png", "rb").read() k = 0 for i in range(5000): if k == 1: break for j in range(5000): c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + m[24:29] crc = binascii.crc32(c) & 0xffffffff if crc == 0x370c8f0b: k = 1 print(hex(i), hex(j)) break
出宽高值
WinHex 修改后保存
拿到 flag
四、[HBNIS2018] caesar(凯撒密码枚举)
点击链接下载文件
打开文件内容如下
根据题目凯撒应该是凯撒密码加密了,直接枚举拿到 flag
五、[HBNIS2018] 低个头(键盘解密)
点击链接下载文件
文件内容如下
emmm……这题太抽象了,网上看是键盘上的字母连在一起就是 CTF(果真低头)
所以 flag 就是:flag{CTF}
六、[SWPU2019] 伟大的侦探(IBM EBCDIC 编码 & 跳舞的小人解码)
点击链接下载文件
解压缩文件需要密码,有个 密码.txt 文件内容如下
可以看出编码方式不对,在 WinHex 中换成 IBM EBCDIC 编码
密码为:wllm_is_the_best_team!
解压出来后看到一堆小人图片
网上查了查说是跳舞的小人密码——来自《福尔摩斯:跳舞的小人》 (刚好与题目对应)
解密得到 iloveholmesandwllm
七、黑客帝国(十六进制转文件 & Archpr 爆破 & WinHex 修改)
点击链接下载文件
打开文件,有经验的话能看出这是 RAR 头文件
编写 Python 代码将十六进制数写成 RAR 文件
import binascii hex_data='这里填十六进制数据' out=open('res.rar','wb') out.write(binascii.unhexlify(hex_data)) out.close()
解压缩发现需要密码
使用 Archpr 爆破得到密码
最后修改文件头部拿到 flag
八、[SUCTF2018] single dog
点击链接下载文件
打开后是一张图片,使用 Binwalk 分析发现有隐藏文件
打开压缩包发现密文
aaencode 解码即可