文章目录
- 一、buuctf靶场
- 1、MD5
- 2、一眼解密
- 3、Url编码
- 4、回旋踢
- 5、摩斯
- 6、Password
- 7、变异凯撒
- 8、Quoted-printable
- 9、Rabbit
- 10、篱笆墙的影子
- 11、RSA
- 12、丢失的MD5
- 二、ctf题型
- 1、PWN,Reverse
- 1)Reverse
- 2)pwn
- 2、Crypto
- 1)古典密码学
- 2)现代密码学
- 3、web
- 4、Misc
- 1)Recon(信息搜集)
- 2)Encode(编码转换)
- 3)Forensic && Stego(数字取证 && 隐写分析)
- 三、ctf学习资源
- 1、基础
- 2、A方向
- 1)推荐书籍
- 2)练习资源
- 3、B方向
- 1)推荐书籍
- 2)练习资源
- 4、CTF比赛
- 5、业内网站推荐
- 四、CTF密码学
- 1、密码学的三个发展阶段
- 1)古典密码阶段
- a.摩斯密码
- ① 字母
- ② 数字
- ③ 标点符号
- ④ 非英文字符
- ⑤ 特殊符号
- ⑥ 加解密工具
- b.换位密码
- ① 栅栏密码
- ② 凯撒密码
- ③ 曲路密码
- ④ 列移位密码
- c.替换密码
- ① 单表替换加密
- ② 多表替换加密
- 棋盘密码Polybius
- Vigenere 维吉尼亚密码
- 加解密工具
- d.其他类型加密
- ① 培根密码
- 加解密工具
- ② 埃特巴什码
- ③ 猪圈密码
- 解密工具
- ④ 键盘密码
- 2)近代密码阶段
- a.对称密码
- ① DES
- ② 3DES
- ③ 其他密码
- b.非对称密码
- c.摘要算法
- 2、密码学的根本目标
- 3、编解码
- 1)ASCII编码
- 2)BASE家族
- Base64映射表
- base64加密
- 加解密工具
- 3)ShellCode编码
- 4)Quoted-printable 编码
- 5)URL编码
- 6)Unicode编码
- 7)HTML实体编码
- 五、ctf文件操作与隐写
- 1.文件类型识别
- 1)File
- 2)Winhex
- 2.文件分离
- 1)Binwalk
- 2)Foremost
- 3)dd
- 4)Winhex
- 3.文件合并
- 1)Linux下的文件合并
- 2)Windows下的文件合并
- 4.文件完整性检测
- 1)Linux
- 2)Windows
- 5.文件内容隐写
- 6.图片文件隐写
- 隐写方式
- 7.LSB最低有效位隐写
- 六、压缩文件分析
- 1.伪加密
- 2.暴力破解
- 七、流量包文件分析
- 1.Wireshark过滤器
- 1)过滤IP
- 2)过滤端口
- 3)过滤协议
- 4)过滤MAC
- 5)包长度过滤
- 6)http模式过滤
- 八、SQL挑战
- 1.Level 1
一、buuctf靶场
网址:https://buuoj.cn/challenges
1、MD5
答案是flag{admin1}
2、一眼解密
下面的字符串解密后便能获得flag:
ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30= 注意:得到的 flag 请包上 flag{} 提交
显然是base64加密
flag{THE_FLAG_OF_THIS_STRING}
3、Url编码
flag{and 1=1}
4、回旋踢
synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
凯撒密码,13位
A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm
flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}
5、摩斯
… .-… — …- . -.-- — …-
iloveyou
flag{ILOVEYOU},摩斯密码需大写
6、Password
姓名:张三
生日:19900315
key格式为key{xxxxxxxxxx}
flag{zs19900315}
7、变异凯撒
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
str=“afZ_r9VYfScOeO_UL^RWUc”
k=5
for i in str:
print(chr(ord(i)+k),end=‘’)
k+=1
flag{Caesar_variation}
8、Quoted-printable
=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
flag{那你也很棒哦}
9、Rabbit
U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
flag{Cute_Rabbit}
解密工具是:http://www.jsons.cn/rabbitencrypt/
10、篱笆墙的影子
felhaagv{ewtehtehfilnakgw}
栅栏密码 2 加密
flag{wethinkwehavetheflag}
11、RSA
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交
(1)求n
473398607161 *4511491=2135733555619387051
(2)求m
φ (473398607160,4511490)=2135733082216268400
(3)求e
1<e<m gcd(e,m)=1 e,m互质,还是取17
(4)求d
1<d<m 17d-2135733082216268400y=1 取d=?,y=?
计算方法
import gmpy2
e = 17
p = 473398607161
q = 4511491
phi_n = (p-1)(q-1)
d = gmpy2.invert(e,phi_n)#即ed mod phi_n = 1
print(d)
flag{125631357777427553}
12、丢失的MD5
代码执行报错,这是改后的
import hashlib
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update((‘TASC’+chr(i)+‘O3RJMV’+chr(j)+‘WDJKX’+chr(k)+‘ZM’).encode(‘utf-8’))
des=m.hexdigest()
if ‘e9032’ in des and ‘da’ in des and ‘911513’ in des:
print (des)
flag{e9032994dabac08080091151380478a2}
二、ctf题型
1、PWN,Reverse
PWN,Reverse偏重对汇编,逆向的理解
1)Reverse
涉及 Windows、Linux、Android 平台的多种编程技术,要求利用常用工具对源代码及二进制文件进行逆向分析,掌握 Android 移动应用 APK 文件的逆向分析,掌握加解密、内核编程、算法、反调试和代码混淆技术。
2)pwn
CTF pwn中的目标是拿到flag,一般是在Linux平台下通过二进制/系统调用等方式编写漏洞利用脚本exp来获取对方服务器的shell,然后get到flag。
2、Crypto
Crypto偏重对数学,算法的深入学习,也要有脚本编写能力
密码学(Cryptography)一般可分为古典密码学和现代密码学。
1)古典密码学
古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰的定义。古典密码学主要包含以下几个方面:
单表替换加密(Monoalphabetic Cipher)
多表替换加密(Polyalphabetic Cipher)
奇奇怪怪的加密方式
2)现代密码学
现代密码学起源于 20 世纪中后期出现的大量相关理论,1949 年香农(C. E. Shannon)的经典论文标志着现代密码学的开始。现代密码学主要包含以下几个方面:
对称加密(Symmetric Cryptography),以 DES,AES,RC4 为代表。
非对称加密(Asymmetric Cryptography),以 RSA,椭圆曲线加密为代表。
哈希函数(Hash Function),以 MD5,SHA-1,SHA-512 等为代表。
数字签名(Digital Signature),以 RSA 签名,DSA 签名为代表。
3、web
Web偏重于对技巧沉淀,快速搜索能力的挑战
WEB 类的题目包括但不限于:SQL 注入、XSS 跨站脚本、CSRF 跨站请求伪造、文件上传、文件包含、框架安全、PHP 常见漏洞、代码审计等。
4、Misc
Misc则更为复杂,所有与计算机安全挑战相关的都在其中,也会包含很多脑洞
Misc 是英文 Miscellaneous 的前四个字母,杂项、混合体、大杂烩的意思。
1)Recon(信息搜集)
主要介绍一些获取信息的渠道和一些利用百度、谷歌等搜索引擎的技巧
2)Encode(编码转换)
主要介绍在 CTF 比赛中一些常见的编码形式以及转换的技巧和常见方式
3)Forensic && Stego(数字取证 && 隐写分析)
隐写取证是 Misc 中最为重要的一块,包括文件分析、隐写、内存镜像分析和流量抓包分析等等,涉及巧妙的编码、隐藏数据、层层嵌套的文件中的文件,灵活利用搜索引擎获取所需要的信息等等。
三、ctf学习资源
1、基础
Linux基础,计算机组成原理,操作系统原理,网络协议分析
2、A方向
IDA,OD,逆向工程,密码学,缓冲区溢出
1)推荐书籍
RE for Beginners(逆向工程入门)
IDA Pro权威指南
揭秘家庭路由器0day漏洞挖掘技术
自己动手写操作系统
黑客攻防技术宝典:系统实战篇
2)练习资源
WeChall http://www.wechall.net/challs
http://canyouhack.it/
酷炫 https://microcorruption.com/login
http://smashthestack.org/
wargame集合 https://overthewire.org/wargames/
老wargame https://exploit-exercises.com/
PWN游乐场 http://pwnable.kr/play.php
3、B方向
网络安全,内网渗透,Web安全,数据库等无所不学
1)推荐书籍
Web安全深度剖析
Web应用安全权威指南
Web前端黑客技术揭秘
黑客秘籍:渗透测试实用指南
黑客攻防技术宝典:Web实战篇
代码审计:企业级Web代码安全架构
2)练习资源
WeChall http://www.wechall.net/challs
CTF List http://captf.com/practice-ctf/
攻防世界 https://adworld.xctf.org.cn/
Bugku https://ctf.bugku.com/
i春秋 https://www.ichunqiu.com/
墨者学院 https://www.mozhe.cn/
网络信息安全攻防学习平台 http://hackinglab.cn/
XSS测试 http://prompt.ml/0
SQL挑战 http://redtiger.labs.overthewire.org/
https://github.com/truongkma/ctf-tools
https://github.com/Plkachu/v0lt
https://github.com/zardus/ctf-tools
https://github.com/TUCTF/Tools
4、CTF比赛
以练促赛:选择一场已经存在Writeup的比赛
以赛养练:参加一场最新CTF比赛
https://ctftime.org 国际比赛(包含一些比较基础的比赛)
http://www.xctf.org.cn 国内比赛(国内主流,但题目大部分偏难
5、业内网站推荐
渗透师 https://www.shentoushi.top/
安全圈 https://www.anquanquan.info/
纳威安全导航 https://navisec.it/
SecWiki https://www.sec-wiki.com/index.php
四、CTF密码学
1、密码学的三个发展阶段
1)古典密码阶段
古典密码阶段(1949年以前),早期的数据加密技术比较简单,复杂程度不高,安全性较低,大部分都是一些具有艺术特征的字谜。随着工业革命的到来和二次世界大战的爆发数据加密技术有了突破性的发展。出现了一些比较复杂的加密算法以及机械的加密设备。
通常包括单表替换加密,多表替换加密和其他的加密方法
a.摩斯密码
摩斯密码(Morse code)使用了两个基本的信号单位:点(·)和划(—)。通过这两个单位的组合,可以表达不同的字母、数字和标点符号。
① 字母
② 数字
③ 标点符号
④ 非英文字符
⑤ 特殊符号
⑥ 加解密工具
b.换位密码
① 栅栏密码
栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文
例子1:
明文: The quick brown fox jumps over the lazy dog
去空格: Thequickbrownfoxjumpsoverthelazydog
每2个字符为1组分组
分组: Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g
第一组: Teucbonojmsvrhlzdg
第二组: hqikrwfxupoeteayo
密文: Teucbonojmsvrhlzdghqikrwfxupoeteayo
例子2:
密文: hrelldlioswmoe
Hr el ld li os wm oe
明文: helloworldisme
密文:felhaagv{ewtehtehfilnakgw}
Fe lh aa gv {e wt eh te hf il na kg w}
明文:flag{wethinkwehavetheflag}
加解密工具
http://www.hiencode.com/
② 凯撒密码
将明文中的 每个字母 都按照其在字母表中的顺序向后(或向前)移动固定数目(循环移动)作为密文
向后位移三位
密文: iodj{ehoor zrua} 位移三位
明文: flag{bello worx}
加解密工具
http://www.hiencode.com/
③ 曲路密码
需要事先约定密钥(曲路路径)
明文: flag{y0u_are_p1g@}(行或列为3)
f l a g { y
0 u _ a r e
_ p 1 g @ }
密文:}ey{r@gaga_1pulf0_
④ 列移位密码
列移位密码(Columnar Transposition Cipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文
以how are u在字母表中的出现的先后顺序进行编号,我们就有a为1,e为2,h为3,o为4,r为5,u为6,w为7,所以先写出a列,其次e列,以此类推写出的结果便是密文:
明文:Thequickbrownfoxjumpsoverthelazydog
按howare长度每7个字符分为1组
T h e q u i c
k b r o w n f
o x j u m p s
o v e r t h e
l a z y d o g
根据次序按列取数
密文: qoury inpho Tkool hbxva uwmtd cfseg erjez
c.替换密码
① 单表替换加密
移位密码
与凯撒密码类似,区别在于移位密码不仅会处理字母,还会处理数字和特殊字符,常用 ASCII 码表进行移位。其破解方法也是遍历所有的可能性来得到可能的结果。
简单替换密码
将每个明文字母替换为与之唯一对应且不同的字母。它与恺撒密码之间的区别是其密码字母表的字母不是简单的移位,而是完全是混乱的,这也使得其破解难度要高于凯撒密码
a对应p,b对应h,依次类推
此种加密方式密钥个数为26!,几乎不可能爆破
② 多表替换加密
棋盘密码Polybius
明文 HELLO,加密后就是
23 15 31 31 34
Vigenere 维吉尼亚密码
使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式
例子1:
加密过程:
对密钥填充至与明文长度一致
然后查表得密文
密文:efktzfgrrltzn
例子2:
明文:nice to meet you
密钥:nice
n i c e t o m e e t y o u
n i c e n i c e n i c e n
密文:
A Q E I G W O I R B A S H
aqeigwoirbash
加解密工具
d.其他类型加密
① 培根密码
培根密码是一种简单的替换密码,密文字符只有两个(a和b),每个明文字符都会被替换为一个由a和b组成的长度为5的字符串。
比如明文h被替换后的密文为aabbb
密文字符也可以选择任意两个其它字符
如果看到这种全部由两个字母组成的密文,那么就可以猜测可能是培根密码。
常规培根密码表
明文i和j、u和v所对应的密文是一样的。
扩展培根密码表
包括所有26个字符。
例子:http://ctf5.shiyanbar.com/crypto/enc1.txt
– — .-. … . …–.- … … …–.- -.-. — — .-… …–.- -… …- - …–.- -… .- -.-. — -. …–.- … … …–.- -.-. — — .-… . .-. …–.- -… -.-. -.-. -… -.-. -.-. -.-. -… -… -… -.-. -… -.-. -.-. -.-. -… -… -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -… -… -.-. -… -.-. -.-. -.-. -.-. -… -.-. -.-. -.-. -.-. -.-. / -.-. -… -.-. -.-. -.-. -… -.-. -.-. -… -.-. / -.-. -.-. -.-. -… -.-. -.-. -… -… -… -.-. -.-. -… -… -… -.-. -.-. -… -.-. -… -…
摩斯解码后
morse_is_cool_but_bacon_is_cooler_dccdcccdddcdcccddcccccccccddcdccccdccccccdcccdccdccccdccdddccdddccdcdd
取出dccdcccdddcdcccddcccccccccddcdccccdccccccdcccdccdccccdccdddccdddccdcdd
将c替换为a,d替换为b
baabaaabbbabaaabbaaaaaaaaabbabaaaabaaaaaabaaabaabaaaabaabbbaabbbaababb
然后使用培根密码解密得shiyanbaiscool,所以
明文:morse_is_cool_but_bacon_is_cooler_shiyanbaiscool
加解密工具
② 埃特巴什码
字母倒序,26个字母倒叙输出
明文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
密文:the quick brown fox jumps over the lazy dog
③ 猪圈密码
密文:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
解密工具
④ 键盘密码
明文:35 16 13
密文:bye
明文:vqz
密文:cjm
2)近代密码阶段
近代密码阶段 (1949-1975年),在这期间由于计算机的诞生,使得加密技术从机械时代提升到了电子时代。这使得复杂计算的加密技术成为可能,也使得加密算法在复杂程度和安全性上得到了很大的提高。
3)现代密码阶段
现代密码阶段(1976年至今),美国密码学专家Diffie和Hellman在1976年提出公开密钥密码体制的概念,这是现代密码学的重大发明,也为密码学提供了全新的方向。
主要包含:对称加密(DES,AES,RC4);非对称加密(RSA,ElGamal,椭圆曲线加密);哈希函数(MD5,SHA-1,SHA-512);数字签名(RSA签名,ElGamal签名,DSA签名)
a.对称密码
对称密码是一种常见的加密算法,具有以下特点:
单一密钥:对称密码使用相同的密钥进行加密和解密操作。发送者和接收者必须事先商定并共享相同的密钥。
加密速度快:对称密码算法通常具有较快的加密和解密速度,这使得其适用于大量数据的加密和解密操作。
实现简单:对称密码的实现相对较简单,所需的计算资源也较少。
加解密效率高:对称密码使用相同的密钥进行加密和解密,因此不需要进行密钥分发和管理,减少了额外的开销。
密钥长度较短:对称密码的密钥长度通常较短,一般情况下为几十到几百位。
① DES
DES:Data Encryption Standard,DES是一种对称加密算法,使用56位密钥对数据进行加密。由于密钥长度较短,已经被认为不够安全,逐渐被更强大的算法所替代。
64比特明文通过56比特密钥加密成64比特,每7位一个检验比特,每一个64比特称为一个分组,长度增长以后,如何迭代(反复)的方式称为模式
② 3DES
3DES(Triple Data Encryption Standard):3DES是对DES的加强版本,使用两次或三次的DES算法来加密数据。它可以提供更高的安全级别,但速度较慢。
③ 其他密码
AES(Advanced Encryption Standard):AES是当前最常用的对称加密算法之一,用于替代DES。它支持128位、192位和256位密钥,并提供较高的安全性和较快的加密速度。
RC4(Rivest Cipher 4):RC4是一种流密码算法,它将密钥和明文数据一次性地进行异或操作来生成密文。虽然在过去广泛使用,但由于存在安全性漏洞,已不再推荐使用
b.非对称密码
密钥的对称性:对非对称密码算法而言,加密和解密所使用的密钥是不同的。公钥用于加密数据,私钥用于解密数据。这样的密钥对有一个重要的特点,即无法通过公钥推导出私钥。
密钥的分发:在非对称密码中,公钥可以自由分发给其他人,而私钥必须保密,只有密钥的所有者可以访问。这样可使公钥广泛公开,而私钥只需安全地存储在密钥的持有者手中。
数字签名:非对称密码算法还可以用于生成和验证数字签名。数据的发送者可以使用其私钥对数据进行签名,接收者可以使用发送者的公钥验证签名的有效性。
密钥长度较长:相比对称密码算法,非对称密码算法使用的密钥长度通常较长,一般为几百到几千位。
RSA算法由两个密钥,即公钥和私钥组成
如果没有 RSA 算法,现在的网络世界毫无安全可言,也不可能有现在的网上交易。众所周知的 ssh 协议也是基于 RSA 加密算法才能确保通讯是加密的。
1976年以前,所有的加密方法都使用对称加密算法:加密和解密使用同一套规则。例如:甲使用密钥 A 加密,将密文传递给乙,乙仍使用密钥 A 解密。如果密钥 A 在甲传递给乙的过程中泄露,或者根据已知的几次密文和明文推导出密钥 A,则甲乙之间的通讯将毫无秘密。
甲使用公钥 A 加密,将密文传递给乙,乙使用私钥 B 解密得到明文。其中公钥在网络上传递,私钥只有乙自己拥有,不在网络上传递,这样即使知道了公钥 A 也无法解密。反过来通讯也一样。只要私钥不泄漏,通信就是安全的,这就是非对称加密算法。
加密
密文 = 明文 E mod N
公钥(E,N)
解密
明文 = 密文 D mod N
私钥(D,N)
密钥对的生成过程
随机找两个质数P和Q,P与Q越大,越安全。(例如:61和53)
计算p和q的乘积n。(n=61×53=3233,n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。)
计算 n 的欧拉函数φ(n)。(根据公式φ(n)=(p-1)(q-1)算出φ(3233)等于60×52,即3120)
随机选择一个整数e,条件是1<e<φ(n),且e与φ(n) 互质。(条件是1<e<φ(n),且e与φ(n) 互质。1到3120之间,随机选择了17。)
求一个整数d,可以使得ed 除以φ(n) 的余数为 1。(ed ≡ 1 (mod φ(n)),即17*2753 mode 3120=1)
将n和e封装成公钥,n和d封装成私钥。(n=3233,e=17,d=2753,所以公钥就是:3233,17,私钥就是:3233, 2753。)
本例中公钥为 (n,e) = (4757,101),私钥为 (n,d) = (4757,1601),仅(n,e) = (4757,101) 是公开的,其余数字均不公开。可以想像如果只有 n 和 e,如何推导出 d,目前只能靠暴力破解,位数越长,暴力破解的时间越长。
例题1:
(1)求n
41 * 83=3403(两个大大大质数)
(2)求m
φ (40,82)=3280
(3)求e
1<e<m gcd(e,m)=1 e,m互质(e和m的最大公约数为1) 取e=17(随便取,不要和3280太接近了)
(4)求d
1<d<m e*d%m= 1 得到 ed-my=1 取d=193,y=1
那公钥(n,e)=(3403,17) 私钥(n,d)=(3403,193)
加密(假设明文为123)
明文^e % n = 123^17 % 3403 = pow(123,17)%3403=943
解密(现在密文就为943)
密文^d % n = 943^193 % 3403= pow(943,193)%3403 = 123
例题2:
两个质数 p=7 q=33 e为17 求:
公钥(n,e)=(231,17)
私钥(n,d)=(231,113)
明文123
求密文 密文= 123^17 mod 231 =51
反推 求明文 明文=
(1)求n
7 * 33=231
(2)求m
φ (6,32)=192
(3)求e
1<e<m gcd(e,m)=1 e,m互质,还是取17
(4)求d
1<d<m 17d-192y=1 取d=?,y=?
加密(假设明文为123)
明文^e % n = 123^17 % 231=pow(123,17)%231=51
解密(现在密文就为943)
密文^d % n = 51^d % 231= ?
c.摘要算法
MD5
MD5(Message Digest Algorithm 5)中文名为消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
MD5作为一种常用的摘要算法(或指纹算法),其具有以下几个重要的特点:
输入任意长度信息,输出长度固定:MD5 可输入任意长度的信息,其输出均为128位(bit)固定长度的二进制数据。
运算速度快:MD5的运算均为32位 与、或、非、位移等位运算,因此其运算速率快,几乎不消耗CPU时间。
不可逆:根据MD5的的散列结果,无法计算出原始数据(查字典除外)。
碰撞性:原始数据与其MD5散列结果并非一一对应,存在多个原始数据的MD5结果相同的可能性。
其他算法
SHA-1(Secure Hash Algorithm 1):生成160位(20字节)摘要,也常用于文件完整性校验。然而,由于易受到碰撞攻击,SHA-1已逐渐被淘汰。
SHA-256(Secure Hash Algorithm 256-bit):属于SHA-2系列的一种,生成256位(32字节)摘要。SHA-256及其衍生算法(如SHA-384、SHA-512等)应用广泛,是目前信息安全领域中常用的摘要算法之一。
SHA-3:称为Keccak算法,也是一种哈希函数系列。与SHA-2相比,SHA-3具有不同的结构和算法,提供更好的安全性和性能。
RIPEMD(RACE Integrity Primitives Evaluation Message Digest):是欧洲CRYPTREC项目的候选摘要标准之一。RIPEMD-160广泛应用于比特币和其他加密货币领域。
2、密码学的根本目标
机密性(Confidentiality)
完整性(Integrity)
可用性(Availability)
认证性(Authentication)
不可否认性(Non-repudiation)
前三者称为信息安全的CIA三要素
3、编解码
1)ASCII编码
第一部分是:ASCII非打印控制字符(参详ASCII码表中0-31);
第二部分是:ASCII打印字符,也就是CTF中常用到的转换;
第三部分是:扩展ASCII打印字符
2)BASE家族
base64、base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32,64分别表示用多少个字符来编码。
Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,email via MIME,在XML中存储复杂数据。
编码原理:Base64编码要求把3个8位字节转化为4个6位的字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的6次方是64,这也是为什么是64个字符(A-Z,a-z,0-9,+和/这64个编码字符,=号不属于编码字符,而是填充字符)的原因,这样就需要一张映射表,如下:
Base64映射表
base64加密
先将明文参照ASCII码对照表,找到每个字符对应的ASCII码,之后转换为8位的二进制,最后将转换好的二进制按照6位分组,不够的补0,最后转换好的6位的二进制的位数一定要确保是6和8的倍数(位数一定要加上补上的0),如果不够6和8的位数,用“=”占位,一个“=”占6位,之后转换为十进制,最后的十进制的结果对照base64编码表进行转换。
例题:you进行base64编码
6和8的最小公倍数:24
可以使用python ord(‘y’)查得ascii码,使用bin(121)查得二进制,不够8位补0
y:121 01111001
o:111 01101111
u:117 0111 0101
每隔6位为一组,前面补0凑够8位,然后对照base64表输出
00011110 30 e
00010110 22 w
00111101 61 9
0011 0101 53 1
所以密文是:ew91
如果明文是you i
y:121 01111001
o:111 01101111
u:117 0111 0101
I:105 01101001
00011110 30 e
00010110 22 w
00111101 61 9
0011 0101 53 1
00011010 26 a
00010000 16 Q
不包括前面补的2个0,上面一共有36个字符,不满足6和8的倍数,补=凑足条件需凑到48即需再加2个等号(一个等号6位)
所以最后密文是ew91aQ==
加解密工具
3)ShellCode编码
ASCII编码,以\x开头
源文本: The quick brown fox jumps over the lazy dog
编码后:
#!shell
\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75\x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67
4)Quoted-printable 编码
多用途互联网邮件扩展(MIME) 一种实现方式
5)URL编码
url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码
源文本: The quick brown fox jumps over the lazy dog
编码后: %54%68%65%20%71%75%69%63%6b%20%62%72%6f%77%6e%20%66%6f%78%20%6a%75%6d%70%73%20%6f%76%65%72%20%74%68%65%20%6c%61%7a%79%20%64%6f%67
6)Unicode编码
Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集
Unicode编码有以下四种编码方式:
源文本: The
&#x [Hex]: The
&# [Decimal]: The
\U [Hex]: \U0054\U0068\U0065
\U+ [Hex]: \U+0054\U+0068\U+0065
7)HTML实体编码
五、ctf文件操作与隐写
1.文件类型识别
1)File
Linux file命令,可识别无扩展名的文件类型
如下图,将1.txt后缀名去掉后file仍然可以正确识别出其类型
2)Winhex
Windows工具winhex,根据文件头判断文件类型
常见文件类型文件头
将2.jpg改成2后仍然可以识别出文件头进而判断其类型
FF D8 FF E0
用这个工具也可以修复文件头残缺或错误的文件,只需要在工具里编辑正确的文件头即可
使用粘贴零字节插入新的数据
2.文件分离
1)Binwalk
Linux binwalk可以分析和分离文件,分离成功会生成一个”文件名_extracted”的文件夹
分析文件:binwalk filename
分离文件:binwalk -e filename
使用winhex查看发现有pk,说明可能有隐含文件,这时可以尝试分离文件
2)Foremost
Kali formost也可以分离文件
formost filename -o dir
kali安装:apt-get install foremost
3)dd
dd手动实现分离交叉分布的文件
Skip跳过多少块
4)Winhex
winhex也可以手动分离,复制出想要分离的部分数据,新建一个文档贴进去就行,记得删除新建文档的00
3.文件合并
1)Linux下的文件合并
cat 合并的文件 >输出的文件
└─# cat payload_2.jpg archive-key.asc > c
可以看出c确实合并了2个文件
2)Windows下的文件合并
copy /b 要合并的文件1+要合并的文件2 输出的文件
可以看出out又合并了一个jpeg图片,使用foremost分离可以看出2个图片都在jpg文件夹里
4.文件完整性检测
1)Linux
md5sum 文件名
2)Windows
certutil -hashfile 文件名 md5
记住不同文件,内容一样哈希值是一样的
5.文件内容隐写
使用winhex,先看头尾,中间用flag或key搜索
6.图片文件隐写
隐写方式
图片混合隐写
隐写进图片的属性
隐写图片的大小
第18位开始是图片大小数值
隐写图片的头部码
复合隐写
Gif隐写
Framebrowser
两张图片重叠在一起,使用工具:stegsolve.jar
二维码图片可以使用工具QRresearch扫码
7.LSB最低有效位隐写
LSB隐写就是通过修改RGB颜色分量的最低位二进制(LSB),来进行信息的储存,人类的眼睛并不能感知到前后的变化每个像素可以携带3bit的信息
检测工具:stegsolve.jar
检测方法:将Red、Green、Blue三个位置的有多余信息的通道(这里是0通道)勾选并导出保存为png格式的文件
六、压缩文件分析
1.伪加密
操作方法:使用winhex打开压缩文件,找到伪加密文件头开始第9第10个字符,将其修改为0000
a、Winhex搜索504b0102,可以看到每个加密文件的文件头字段
b、从50开始计算,第9和第10个字符改成0000,表示未加密
2.暴力破解
可以使用archpr暴力破解加密rar
攻击类型选择掩码可以进行复杂的爆破,比如知道密码前3位是abc后三位为数字,则可以在攻击类型选择掩码,掩码处输入abc???,暴力范围选择所有数字
七、流量包文件分析
1.Wireshark过滤器
常用的过滤命令
1)过滤IP
如源IP或目标X.X.X.X
Ip.src eq x.x.x.x or ip.dst eg x.x.x.x
或者ipaddr eq x.x.x.x
2)过滤端口
tcp.port eq 80 or udp.port eq 80
tcp.dstport80
tcp.srcport80
tcp.port>=1 and tcp.port <=80
3)过滤协议
tcp/udp/arp/icmp/http/ftp/dns/ip…
4)过滤MAC
eth.dst==A0:00:00:04:c5:84
5)包长度过滤
udp.length26
tcp.len>=7
ip.len94
fame.len==119
6)http模式过滤
http.request.method==”GET”
http.request.method==”POST”
http.request.uri==”/img/logo-edu.gif”
http contains “GET”
http contains “HTTP/1.”
http.request.method==”GET” && http contain “User-Agent:”
http contains “flag”
http contains “key”
tcp contains “flag”
八、SQL挑战
http://redtiger.labs.overthewire.org/