密码存储或加密特征

MD5 SHA1 NTLM AES DES RC4

MD5

MD5是一种哈希算法,不可逆。但是可以通过爆破、碰撞得到原来的明文。

MD5的值有两种

  • 32位
  • 16位

由数字0-9,字母a-z组成。

像这样:

1
2
密文:a8db1d82db78ed452ba0882fb9554fc
原文:ctf

好用的工具:

https://www.cmd5.com/

SHA1

值的特征与md5差不多,但是位数是 40 位

NTLM

NTLM是windows的哈希算法,标准通讯安全协议

AES、DES、RC4

对称加密,密文特征与base64类似

数据传输编码特征

BASE64 URL HEX ASCII

BASE64

BASE64值由数字、大小写字母组成,大小写敏感,结尾通常有符号 =

URL编码

URL编码有数字、大小写字母组成,大小写敏感,通常以&数字字母间隔

HEX编码

HEX是计算机数据的有一种表现方法,将数据进行十六进制转换,由数字、字母组成。

ASCII

ASCII ,很熟悉

数字编码应用场景:参数传递,后期waf绕过干扰,视频地址还原

JS前端代码加密

js颜文字 jother jsfuck

颜文字

就是这玩意

1
゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+/*´∇`*/(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (゚ー゚))+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ (゚Д゚) ['c']+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

jother

有编码为字符串和编码为函数两种,特别脑残

这玩意是a的编码

1
(![]+[])[+!![]]

jsfuck

和jother差不多,但是没有 { }

这玩意是a的编码

1
(![]+[])[+!+[]]

应用场景:ctf

后端代码加密

PHP .NET JAVA

PHP

乱码,头部有信息

.NET

DLL封装代码文件

JAVA

jar 类

应用场景:版权代码加密,开发特性,ctf,绕过waf

其他杂七杂八的编码

Quoted-printable编码

特征是以 等号 + 十六进制两个字符 组成的一长串

像这样:

1
=E7=94=A8=E4=BD=A0=E9=82=A3=E7=81=AB=E7=83=AD=E7=9A=84=E5=98=B4=E5=94=87=E8=AE=A9=E6=88=91=E5=9C=A8=E5=8D=88=E5=A4=9C=E9=87=8C=E6=97=A0=E5=B0=BD=E7=9A=84=E9=94=80=E9=AD=82

好用的在线工具:

http://www.hiencode.com/quoted.html

凯撒密码

它是一种替换加密的技术,明文所有字母都在字母表字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

像这样:

1
2
密文:gmbh{ifmmp_dug}
原文:flag{hello_ctf}

好用的工具:

http://www.hiencode.com/caesar.html

埃特巴什码(Atbash Cipher)

明文密文对应关系如下:

明文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

就像这样:

1
2
3
密文:uozt{Zgyzhv_xlwv_uiln_xguhsld}
明文:flag{Atbase_code_from_ctfshow}
!!!!!!!!!!!! 注意:工具解出来的很有可能不区分大小写

好用的工具(转换结果记得修改大小写):

http://www.hiencode.com/atbash.html

多重base

各种base套娃,base64套base32套base16套base64……..

网上没有好用的多重解码在线工具,得自己写脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import base64
import string

with open('base.txt') as f:
text = f.read()

while(1):
try:
text = base64.b64decode(text).decode()
except Exception as e:
try:
text = base64.b32decode(text).decode()
except Exception as e:
try:
text = base16.b32decode(text).decode()
except Exception as e:
break

print(text)

当铺密码

汉字有多少笔画出头,就是转化成数字几

当铺密码为简单加密法,加密方式以汉字出头的笔画来计数
例:“由”字有一笔出头,则为1
王夫 井工 夫口 由中人 井中 夫夫 由中大=67 84 70 123 82 77 125
转换出来的数字多用于十进制转ascII

1
由田中 由田井 羊夫 由田人 由中人 羊羊 由由王 由田中 由由大 由田工 由由由 由由羊 由中大

对应的十进制:

1
102 108 97 103 123 99 116 102 115 1田4 111 119 125

对应的ascii字符

1
flag{ctfsow}

好用的工具:

https://dsb.ink/ctf/dangpu.html