首页 > 其他分享 >托马斯.杰斐逊 转轮密码(Bugku)

托马斯.杰斐逊 转轮密码(Bugku)

时间:2024-09-28 09:21:45浏览次数:3  
标签:index code 杰斐逊 rotated 转轮密码 Bugku 密钥 密文 row

1. 只要做过这种题,肯定知道是转轮密码。

接下来介绍下转轮密码

特征:给你一个密码表,n行的26个字母,key是 1 - n 的数列, 密文是 n 个英文字母

根据 key 找对应行的密码表,然后在密码表上找密文字母,以这个字母为开头,重新排序。

2. 这种如果用手一个一个编辑的话肯定是会很慢的,在比赛中是不可取的,所以需要使用脚本来快速得到flag。这个脚本能自动进行解码并输出间隔排序,非常的直观,在选择特殊的列,并输入即可得到flag

# 密码本
code = [
    "ZWAXJGDLUBVIQHKYPNTCRMOSFE",
    "KPBELNACZDTRXMJQOYHGVSFUWI",
    "BDMAIZVRNSJUWFHTEQGYXPLOCK",
    "RPLNDVHGFCUKTEBSXQYIZMJWAO",
    "IHFRLABEUOTSGJVDKCPMNZQWXY",
    "AMKGHIWPNYCJBFZDRUSLOQXVET",
    "GWTHSPYBXIZULVKMRAFDCEONJQ",
    "NOZUTWDCVRJLXKISEFAPMYGHBQ",
    "QWATDSRFHENYVUBMCOIKZGJXPL",
    "WABMCXPLTDSRJQZGOIKFHENYVU",
    "XPLTDAOIKFZGHENYSRUBMCQWVJ",
    "TDSWAYXPLVUBOIKZGJRFHENMCQ",
    "BMCSRFHLTDENQWAOXPYVUIKZGJ",
    "XPHKZGJTDSENYVUBMLAOIRFCQW",
]

# 密文和密钥
codetext = "HCBTSXWCRQGLES"  # 密文
codenum = "2,5,1,3,6,4,9,7,8,14,10,13,11,12"  # 密钥
codenum = [int(i) - 1 for i in codenum.split(",")]  # 将密钥字符串分割成列表并转换为0索引

# 用于存储旋转后的行,保持与密钥顺序一致
rotated_code = []


# 重新排列密码本中的行,并根据密钥顺序旋转
for i, row_index in enumerate(codenum):
    index = code[row_index].index(codetext[i])  # 找到当前密文字符在对应行中的位置
    rotated_row = code[row_index][index:] + code[row_index][:index]  # 旋转行
    rotated_code.append(rotated_row)  # 添加到新的旋转密码本中

# 格式化解码本
spaced_code = ['  '.join(row) for row in rotated_code]
letter_count = len(spaced_code[0].split())  # 计算字母个数

# 生成第一行数字,确保每个数字占用3个字符宽度对齐
number_line = '  '.join([f"{i + 1:>3}" for i in range(letter_count)])

# 打印第一行数字
print(f"{number_line}")
# 格式化输出每一行,确保字母对齐
for row in spaced_code:
    formatted_row = '  '.join([f"{char:>3}" for char in row.split()])
    print(formatted_row)

# 询问用户想查看哪一列
column = int(input("\n请输入想要查看的列号 : "))  # 用户输入列号

# 检查输入是否有效
if 1 <= column <= letter_count:
    column_letters = []  # 用于存储整列的字母
    for row in rotated_code:  # 使用旋转后的密码本
        letter = row[column - 1]  # 获取该列的字母
        column_letters.append(letter)  # 添加到列表中

    # 将列字母拼接成一个字符串并用 flag{} 包裹
    flag_output = "flag{" + ''.join(column_letters) + "}"
    print(f"\n第 {column} 列的内容是: {flag_output}")
else:
    print("无效的列号。")

标签:index,code,杰斐逊,rotated,转轮密码,Bugku,密钥,密文,row
From: https://blog.csdn.net/2301_80194086/article/details/142587474

相关文章

  • CTF-BugKu-PWN 瑞士军刀
    参考:bugku-瑞士军刀_114.67.175.224-CSDN博客NC:https://www.cnblogs.com/bakari/p/10898604.html#:~:text=nc%EF%BC%8C%E5%85%A8%E5%90%8D%E5%8F%AB%20n注意:nc连上之后是没有反馈的ls:列出目前工作目录所含的文件及子目录 可以看到有flag文件cat:用于显示文本文件内......
  • BugKu CTF Misc:密室逃脱 & 铁子,来一道 & 想要种子吗 & 哥哥的秘密
    前言BugKu是一个由乌云知识库(wooyun.org)推出的在线漏洞靶场。乌云知识库是一个致力于收集、整理和分享互联网安全漏洞信息的社区平台。BugKu旨在提供一个实践和学习网络安全的平台,供安全爱好者和渗透测试人员进行挑战和练习。它包含了各种不同类型的漏洞场景,如Web漏洞、系统......
  • BugKu CTF Misc:被勒索了 & disordered_zip & simple MQTT & 请攻击这个压缩包
    前言BugKu是一个由乌云知识库(wooyun.org)推出的在线漏洞靶场。乌云知识库是一个致力于收集、整理和分享互联网安全漏洞信息的社区平台。BugKu旨在提供一个实践和学习网络安全的平台,供安全爱好者和渗透测试人员进行挑战和练习。它包含了各种不同类型的漏洞场景,如Web漏洞、系统......
  • BugKu CTF Misc:眼见非实 & 啊哒 & ping & Snowfall
    前言BugKu是一个由乌云知识库(wooyun.org)推出的在线漏洞靶场。乌云知识库是一个致力于收集、整理和分享互联网安全漏洞信息的社区平台。BugKu旨在提供一个实践和学习网络安全的平台,供安全爱好者和渗透测试人员进行挑战和练习。它包含了各种不同类型的漏洞场景,如Web漏洞、系统......
  • Bugku -----Web-----全题目解析 (二) 超详细步骤
    ————————————————————分割线———————————————————— 6.矛盾这一行从URL查询字符串中获取名为num的参数值,并将其赋值给$num变量。如果URL中没有提供num参数,或者参数值不是有效的字符串,则$num将被设置为空或者默认值。......
  • [Bugku] web-CTF靶场详解!!!
    平台为“山东安信安全技术有限公司”自研CTF/AWD一体化平台,部分赛题采用动态FLAG形式,避免直接抄袭答案。          平台有题库、赛事预告、工具库、Writeup库等模块。---------------------------------你必须让他停下:                    ......
  • [Bugku] web-CTF靶场详解!!!
               平台为“山东安信安全技术有限公司”自研CTF/AWD一体化平台,部分赛题采用动态FLAG形式,避免直接抄袭答案。          平台有题库、赛事预告、工具库、Writeup库等模块。-------------------------------Simple_SSTI_1         ......
  • bugku攻略
    目录第一关(Simple_SSTI_1)第二关(Simple_SSTI_2)第三关(Flask_FileUpload)第四关(留言板)第五关(滑稽)第一关(Simple_SSTI_1)查看源码,需要我们在flask里建立一个SECRET_KEY直接访问URL+?flag={{config.SECRET_KEY}}得到flag输入flag第二关(Simple_SSTI_2)查看源码......
  • Bugku:Simple_SSTI_2
    目录1.进入网站查看题目2.开始尝试3.判断引擎模板类型4.构造语句,开始注入5.得到flag1.进入网站查看题目再查看源代码,发现没有什么有用的。根据题目提示SSTI,搜索一下SSTI,了解一下。  SSTI(服务器端模板注入)也是格式化字符串的一个非常好的例子,如今的开发已经形成......
  • Bugku CTF 合集
    1.Simple_SSTI_11.打开靶场,翻译得知需要输入一个flag作为参数,检查源代码,发现可以设置secretkey作为变量经了解,SSTL是一个模板注入,SECRETKEY:是flask一个重要得配置值需要用以下代码来加密/?flag={{config.SECRETKEY}}(注意大小写),或直接/?flag={{config}}......