CTF常见密码汇总
栅栏密码
fg2ivyo}l{2s3_o@aw__rcl@-->flag{w22_is_v3ry_cool}
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)用一定的规则把原文打乱然后用@连接)
类栅栏密码
特征:会给你一串乱序的密文 C,同时给你从1 到 n 的一串乱序的数,找下 C 对于 n 的最大公约数,然后将他们重新排序。
动手画一画就出来了。
BugKu中的一道题:
lf5{ag024c483549d7fd@@1}
一张纸条上凌乱的写着2 1 6 5 3 4

再按照123456的顺序数从第一行排到最后一行:
flag{52048c453d794df1}@@
提交 flag发现不对,这两个@@有点奇怪,去掉@就成功了,那么一般这种字符都是迷惑人的。
md5
18414996c5377f5f4419a40eba901789-->flag{hello_world!}
一般为32位 由数字和小写字母组成
base家族

base64
ZmxhZ3toZWxsb193b3JsZCF9IAo==-->flag{hello_world!}
base64的空格被加密成=
base16
666C61677B6D795F6E616D655F482121487D-->flag{my_name_H!!H}
由数字和大写字母组成
base58
xpoetRPM7vtSVDSRGRp4nXv-->flag{hello-world}
Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。
base91
@iH<,{bdR2H;i6*Tm,Wx2izpx2!--> flag{554a5058c9021c76}
国外解密网站:
https://www.dcode.fr/base-91-encoding
http://www.hiencode.com/base91.html
XXencode编码
hS5VZPaBjN4IU6G2VFqZqNG-tPrJm64NgMKQuEa3nNIBIFbh0MLBZEpF4LqZn
9LpBjLoRjPqEV6Lo+
-->
xxencode !!!Give your flag:BaseCTF{BaseCTF_is_So_Good!!}
http://web.chacuo.net/charsetxxencode

UUencode编码
unicode
\u0066\u006c\u0061\u0067\u007b\u0069\u005f\u0077\u0069\u006c\u006c\u005f\u006b\u0069\u006c\u006c\u005f\u0079\u006f\u0075\u0021\u007d-->flag{i_will_kill_you!}
万国码:每一字符都用一个5位字符编码表示,并用\分割
Unicode 字符可以适用于所有已知的编码。Unicode 是继 ASCII(美国国家交互信息标准编码)字符码后的一种新字符编码,它为每一个符号定义一个数字和名称,并指定字符和它的数值(码位),以及该值的二进制位表示法,通过一个十六进制数字和前缀(U)定义一个16位的数值,如:U+0041 表示 A,其唯一的名称是 LATIN CAPITAL LETTER A。
零字符宽度隐写
http://330k.github.io/misc_tools/unicode_steganography.html
零宽度字符是隐藏的不显示的,也是不可打印的,也就是说使用大部分程序和编辑器是看不到这种字符的。它们存在于页面中主要用于调整字符的显示格式。
零宽空格(zero-width space, ZWSP)用于可能需要换行处。
Unicode: U+200B HTML:
零宽不连字 (zero-width non-joiner,ZWNJ)放在电子文本的两个字符之间,抑制本来会发生的连字,而是以这两个字符原本的字形来绘制。
Unicode: U+200C HTML:
零宽连字(zero-width joiner,ZWJ)是一个控制字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果。
Unicode: U+200D HTML:
左至右符号(Left-to-right mark,LRM)是一种控制字符,用于计算机的双向文稿排版中。
Unicode: U+200E HTML: 或
右至左符号(Right-to-left mark,RLM)是一种控制字符,用于计算机的双向文稿排版中。
Unicode: U+200F HTML: 或
字节顺序标记(byte-order mark,BOM)常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的标记。
Unicode: U+FEFF
零宽度字符的作用
数据防爬
将零宽度字符插入关键词文本中,使得匹配关键字时不能正确匹配,但是不影响用户的正常阅读
信息隐藏
可以将信息隐藏在正常文字中而不影响阅读
如何隐藏
首先,输入需要被加密的内容将被转换为其二进制(Morse编码),然后该二进制(Morse编码)将被转换为一系列的零宽度字符。然后可以将零宽度的字符串不可见地插入正常文本中,这样就被隐藏了。
每一种基于零宽度字符的隐写都可以有自己的隐写方式及加密方式,所以可能用这一个工具或脚本加密过的字符串在另一个解密网站就无法成功解密。
注意:加密和解密一定要用同一个网站或脚本!!!
摩斯电码
-... -.- -.-. - ..-. -- .. ... -.-.-->BKCTFMISC
相当于二进制编码
摩斯电码变形
0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101-->flag{}m0rse_code_1s_interest1n9!}
特点:由0和1组成,并且每段的长度不一样
OOK语言
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.……-->flag{ok-ctf-1234-admin}
https://tool.bugku.com/brainfuck/
OOK!是一种为红毛猩猩设计的编程语言。OOK!与众所周知的深奥语言BrainF ***基本上是同构的 ,但语法元素更少
OOK语言变形
..... ..... ..... ..... !?!!. ?.... ..... ..... ..... .?.?! .?... .!........ ..... !.?.. ..... !?!!. ?!!!! !!?.? !.?!! !!!.. ..... ..... .!.?...... ...!? !!.?. ..... ..?.? !.?.. ..... .!.?. ..... ..... !?!!. ?!!!!!!!!! !?.?! .?!.? ..... ....! ?!!.? ..... ...?. ?!.?. .....
-->
flag{bugku_jiami}
Brainfuck语言
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. -->Hello World!
https://tool.bugku.com/brainfuck/
< . ] [ -,8种符号
凯撒密码
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
特点: 在原来字符上进行一定的偏移
escape
flag%7Bi-will-kill-you%21%7D -->flag{i-will-kill-you!}
核心价值观编码
公正公正公正诚信文明公正民主公正法治法治友善平等和谐敬业和谐富强和谐富强和谐文明和谐平等公正公正和谐法治公正公正公正文明和谐民主和谐敬业和谐平等和谐敬业和谐敬业和谐和谐和谐公正法治友善法治-->flag{90025f7fb1959936}
http://www.hiencode.com/cvencode.html
由核心价值观的12个词语组成的编码方式
sha1
7c2380341e0f03f81f873ab8d2ea5b88bc690793 -->flag{hello_world!}
40 位 由数字和小写字母组成
urlencode
%68%61%63%6b%65%72%44%4a-->hackerDJ
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。
比如:
空格ASCII码是32,对应16进制是20,那么urlencode编码结果是:%20,但在新标准中空格对应的是+,见RFC-1738
默认:字母是不进行编码的
当铺密码
羊由大井夫大人王中工-->9158753624
当铺密码[1]就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几
rot13
Ubj pna lbh gryy na rkgebireg sebz na vagebireg ng AFN? In the elevators, the extrovert looks at the OTHER guy's shoes.
-->How can you tell an extrovert from an introvert at NSA? Va gur ryringbef, gur rkgebireg ybbxf ng gur BGURE thl'f fubrf.
ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密。该算法并没有提供真正的密码学上的保全,故它不应该被套用在需要保全的用途上。它常常被当作弱加密示例的典型
词频分析
Eg qnlyjtcnzydl z umaujejmjetg qeydsn eu z bsjdtx tw sgqtxegc al kdeqd mgeju tw yrzegjsoj zns nsyrzqsx kejd qeydsnjsoj
Ew ltm fgtk jds kzl tw sgqtxegc m kerr csj jds wrzc kdeqd eu qrzuueqzr-qeydsn_eu_gtj_usqmnejl_du
-->
In cryptography a substitution cipher is a ?ethod of encoding by which units of plaintext are replaced with ciphertext If you know the way of encoding u will get the flag which is classical-cipher_is_not_security_hs
一种加密方式,做攻防世界的时候遇到的,
在线解密:
https://quipqiup.com/
jsfuck
(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[+[]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+
-->flag{hhaj}
F12打开控制台
将密文复制进去,回车就可以得到密码
decode HTML
LzExOS8xMDEvMTA4Lzk5LL122;ExM-->LzExOS8xMDEvMTA4Lzk5LzExM
DES
秘钥:6XaMMbM7
U2FsdGVkX18IBEATgMBe8NqjIqp65CxRjjMxXIIUxIjBnAODJQRkSLQ/+lHBsjpv1BwwEawMo1c=
-->ctf{67a166801342415a6da8f0dbac591974}
DES是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法
键盘格子密码
r5yG lp9I BjM tFhBT6uh y7iJ QsZ bhM
-->
t o n g y u a n
特征:由三到四个英文字母或数字为一组。
在键盘上找对应的键位,中间围起来的就是密文
托马斯杰斐逊 转轮密码
密码表:

密钥: 2,5,1,3,6,4,9,7,8,14,10,13,11,12
密文:HCBTSXWCRQGL ES
在第 2 行密码表中找H开头的字母,然后以H开头再到尾过一遍,以此类推,整理出另一个密码表:

脚本:
# Rotor cipher decoder
# parameter input
rotor = [
"ZWAXJGDLUBVIQHKYPNTCRMOSFE", "KPBELNACZDTRXMJQOYHGVSFUWI",
"BDMAIZVRNSJUWFHTEQGYXPLOCK", "RPLNDVHGFCUKTEBSXQYIZMJWAO",
"IHFRLABEUOTSGJVDKCPMNZQWXY", "AMKGHIWPNYCJBFZDRUSLOQXVET",
"GWTHSPYBXIZULVKMRAFDCEONJQ", "NOZUTWDCVRJLXKISEFAPMYGHBQ",
"QWATDSRFHENYVUBMCOIKZGJXPL", "WABMCXPLTDSRJQZGOIKFHENYVU",
"XPLTDAOIKFZGHENYSRUBMCQWVJ", "TDSWAYXPLVUBOIKZGJRFHENMCQ",
"BMCSRFHLTDENQWAOXPYVUIKZGJ", "XPHKZGJTDSENYVUBMLAOIRFCQW"
]
cipher = "HCBTSXWCRQGLES"
key = [2, 5, 1, 3, 6, 4, 9, 7, 8, 14, 10, 13, 11, 12]
tmp_list=[]
for i in range(0, len(rotor)):
tmp=""
k = key[i] - 1
for j in range(0, len(rotor[k])):
if cipher[i] == rotor[k][j]:
if j == 0:
tmp=rotor[k]
break
else:
tmp=rotor[k][j:] + rotor[k][0:j]
break
tmp_list.append(tmp)
# print(tmp_list)
message_list = []
for i in range(0, len(tmp_list[i])):
tmp = ""
for j in range(0, len(tmp_list)):
tmp += tmp_list[j][i]
message_list.append(tmp)
print(message_list)
Linux系统的 shadow 文件格式
root:\(6\)HRMJoyGA\(26FIgg6CU0bGUOfqFB0Qo9AE2LRZxG8N3H.3BK8t49wGlYbkFbxVFtGOZqVIq3q
Q6k0oetDbn2aVzdhuVQ6US.:17770:0:99999:7:::
Linux的 /etc/shadow 文件存储了该系统下所有用户口令相关信息,只有 root 权限可以查看,用户口令是以 Hash + Salt 的形式保护的。
每个字段都用 “\)” 或“:”符号分割;
第一个字段是用户名,如root ;
第二个字段是哈希算法,比如 6 代表SHA-512,1 代表 MD5;
第三个字段是盐,比如上面的 HRMJoyGA
第四个字段是口令+盐加密后的哈希值
后面分别是密码最后一次修改日期、密码的两次修改间隔时间(和第三个字段相比)、密码的有效期(和第三个字段相比)、密码修改到期前的警告天数(和第五个字段相比)、密码过期后的宽限天数(和第五个字段相比)、账号失效时间,这里不太重要要;
直接跑 John 试试
john shadow
如果解开了,加 --show 查看解密口令
john --show shadow
就是Linux的shadow文件格式
ZIP 伪加密
使用 WinHex
我们用winhex打开压缩包,搜索504B,点击第二个504B,从后面找第七、八位,发现是 09 00,改为 00 00 即可。
这种方式只适用于ZIP的伪加密,真加密了此方法不适用。
RSA 加解密
a) 密钥生成
1) 选取两个长度为 K 的素数 P 和 Q,计算 N = P * Q;
2) 计算 phi(N) = (P-1) * (Q-1), 其中 phi(N) 是 Z_(N^*) 的阶;
3) 随机选取一个int整数 e ∈ [ 1, phi(N) - 1 ],使得 gcd( e, phi(N)) = 1;
4) 计算它的逆 d,使得 [ e * d mod phi(N) ] = 1;
5) 输出私钥和公钥 sk = ( N, d ), pk = ( N, e );
b) 加密
c = m^e mod(N)
c) 解密
m = c^d mod(N)
标准银河字母

游戏《指挥官基恩》系列
仿射密码 affine cipher
# Q: y = 17x-8 flag{szzyfimhyzd}
flag = "szzyfimhyzd"
flaglist = []
for i in flag:
flaglist.append(ord(i)-97)
flags = ""
for i in flaglist:
for j in range(0,26):
c = (17 * j - 8) % 26
if(c == i):
flags += chr(j+97)
print('flag{'+ flags + '}')
可能会提示你是放射密码 affine,公式: y = k * x + b mod 26 (跟一元一次函数似的)
后面的取模,如果都是英文字母的话是26,不排除有其他形式,比如ASC II 什么的,取模可能会换。
进制转换
二进制 b开头,八进制 o开头,十进制 d开头,十六进制 x开头
s = 'd87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e'
ss = s.split()
sss = []
print(ss)
for i in ss:
if i[0] == 'd':
i = i[1:]
i = int(i,10)
i = chr(i)
sss.append(i)
elif i[0] == 'x':
i = i[1:]
i = int(i,16)
i = chr(i)
sss.append(i)
elif i[0] == 'o':
i = i[1:]
i = int(i,8)
i = chr(i)
sss.append(i)
elif i[0] == 'b':
i = i[1:]
i = int(i,2)
i = chr(i)
sss.append(i)
print(sss)
flag = ''.join(sss)
print(flag)
CTF常见密码汇总的更多相关文章
- 李洪强iOS开发之OC常见错误汇总
// // main.m // 16 - 常见错误汇总 // // Created by vic fan on 16/7/13. // Copyright © 2016年 李洪强. All r ...
- flume常见异常汇总以及解决方案
flume常见异常汇总以及解决方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际生产环境中,我用flume将kafka的数据定期的往hdfs集群中上传数据,也遇到过一系列的坑 ...
- 大数据常见端口汇总-hadoop、hbase、hive、spark、kafka、zookeeper等(持续更新)
常见端口汇总:Hadoop: 50070:HDFS WEB UI端口 8020 : 高可用的HDFS RPC端口 9000 : 非高可用的HDFS RPC端口 8088 ...
- css 17-CSS3的常见边框汇总
17-CSS3的常见边框汇总 #CSS3 常见边框汇总 <!DOCTYPE html> <html lang="en"> <head> < ...
- [CTF]当铺密码
[CTF]当铺密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
- [CTF]栅栏密码学习
[CTF]栅栏密码学习 即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码.栅栏密码是一种置换密码. 例如密文:TEOGSDYUTAENNHLNETAMS ...
- [CTF]培根密码
[CTF]培根密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
- [CTF]栅栏密码
[CTF]栅栏密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
- [CTF]猪圈密码
[CTF]猪圈密码 -------------------- 百度百科 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . https://baike.baidu.com ...
- CTF-Tools 一款CTF古典密码加解密工具
CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...
随机推荐
- ArgoCD 简介
fork https://github.com/DevopsChina/lab/tree/main/deploy/lab04-argocd 1. ArgoCD 简介 基于 kubernetes 的声明 ...
- 如何在 Ubuntu 20.04 上安装 MySQL
https://dev.mysql.com/downloads/mysql/ 简介: MySQL是最流行的开源关系数据库管理系统.它速度快,容易使用,容易扩展,并且流行的LAMP和LEMP的一部分. ...
- 网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
本文由转转QA刘宝成分享,原题"抓包工具wireshark的使用",下文进行了排版和内容优化. 1.引言 跟网络通信有关的应用场景下(比如Web系统.IM聊天应用.消息推送系统等) ...
- Excel函数公式大全(图文详解)
---------------------------- ----------------------------------------------------------------------- ...
- Java内存模型深度剖析
为什么要有内存模型 在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情.要说计算机的内存模型,就要说一下一段古老的历史,看 ...
- 利用JavaScript自定义事件完成组件间的数据通信
我们知道,在JavaScript中,原生DOM事件在开发中是很有用的(与用户交互的重要方式),但是操作原生DOM事件其实有两大缺点:性能低.依赖于浏览器(NodeJs.小程序等不可用).那么这个时候, ...
- 218:解释LINUX文件系统权限
- 面试题: == 和 equals() 区别【包装类重写了object类中的equals方法】
/* * * 面试题: == 和 equals() 区别 * * 一.回顾 == 的使用: * == :运算符 * 1. 可以使用在基本数据类型变量和引用数据类型变量中 * 2. 如果比较的是基本数据 ...
- Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
大家好,我是编程乐趣. 我们都知道,要实现对结构化的数据(文本)搜索是比较容易的,但是对于非结构化的数据,比如图片,视频就没那么简单了. 但是现在有了AI模型,实现图片分类.搜索等功能,就变得容易很多 ...
- 微信小程序如何更改appid
每一个吧小程序对应唯一一个appid; 但是在有些时候,我们需要更改appid; 点击详情,小程序右侧会出现下面的弹窗: 此时我们可以看见修改appid 这里修改了,才是真正的修改了: 这样我们上传微 ...