哈喽大家好,我是菜鸡林某。今天给大家带来CTF夺旗赛入门的第一步密码学篇下半部分(干货部分)不了解什么是CTF和密码学的可以看上一篇
传送门:
网络安全CTF夺旗赛入门到入狱-入门介绍篇
网络安全CTF夺旗赛入门到入狱-密码学上篇
好那么林某人课堂正式开课
常见的几种编码方式
- 字符编码:
• ASCII编码
• base64编码
• Unicode编码
• URL编码 - javascript编码:
• js混淆
• JSfuck
• jother
• aaencode
一、ASCII编码(这玩意应该用不着我多说啥了吧学过编程的应该都懂)
Ø ASCII 码使用8位二进制数组合来表示256 种
可能的字符。
Ø ASCII编码前128个称为标准ASCII 码,标准ASCII码使用后7位二进制数,即首位二进制数固定为0(0xxxxxxx),以此来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。
举例:
“A”字符=01000001=65
“A”字符:字符表示形式,日常使用
01000001:ASCII二进制表示形式,计算机运算
65:ASII十进制表示形式,CTF常用表示形式。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8位用于确定附加的128个特殊符号字符、外来语字母和图形符号。
二、Base64编码
Ø Base64:使用64个可显示字符表示所有的ASC字符。
Ø Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面
补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用
“=”,Base64编码特点:编码后输出的文本末尾可能会出现1或2个’=’
示例1:
- 第一步:“M”、“a”、"n"对应的ASCII码值分别为77,97,110,对应的二进制值是01001101、
01100001、01101110。如图第二三行所示,由此组成一个24位的二进制字符串。 - 第二步:如图红色框,将24位每6位二进制位一组分成四组。
- 第三步:在上面每一组前面补两个0,扩展成32个二进制位,此时变为四个字节:00010011、
00010110、00000101、00101110。分别对应的值(Base64编码索引)为:19、22、5、46。 • 第四步:用上面的值在Base64编码表中进行查找,分别对应:T、W、F、u。因此“Man”Base64编码之后就变为: