CTF学习资源

news2024/11/30 10:42:18

文章目录

  • 一、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)#即e
d 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.srcport
80
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.len
94
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/

1.Level 1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

下岗吧,Excel

ChatGPT的诞生使Excel公式变得过时。通过使用 ChatGPT 的代码解释器你可以做到&#xff1a; 分析数据创建图表 这就像用自然语言与电子表格交谈一样。我将向大家展示如何使用 ChatGPT 执行此操作并将结果导出为Excel格式&#xff1a; 作为示例&#xff0c;我将分析并创建美国…

夸克扫描王App用上了AI大模型 让扫描更清楚、提取文字更方便

对上班族来说&#xff0c;找到一个好用的工具类APP&#xff0c;绝对可以提升工作效率。比如最常见的扫描文件&#xff0c;公司的扫描仪虽然好用但是很难进行深度编辑且不能外出使用&#xff1b;很多手机App也有扫描功能&#xff0c;但技术能力总是差一点&#xff0c;当面对复杂…

Android系统-线程-java线程

引言 Android的框架应用是java环境的。java天生就是多线程。所以对java线程的理解尤为重要。 概念 线程状态转换图 NEW 初始状态 RUNNABLE 运行状态 BLOCKED 阻塞状态 WAITING 等待状态 TIME_WAITING 超时等待状态 TERMINATED 终止状态 注意&#xff1a;调用obj.wait(…

AI大模型的使用-用LangChain链式调用简化多步提示语

众所周知&#xff0c;openAI的prompt对英文比较友好&#xff0c;也就是英文提示它的结果会更准确&#xff0c;假如我们不会英文&#xff0c;我们把中文问题给到OpenAI&#xff0c;然后让它翻译成英文&#xff0c;并把翻译后的英文给到OpenAI&#xff0c;让它帮忙给出解答问题&a…

【升职加薪秘籍】我在服务监控方面的实践(9)-报警设计

大家好,我是蓝胖子&#xff0c;关于性能分析的视频和文章我也大大小小出了有一二十篇了&#xff0c;算是已经有了一个系列&#xff0c;之前的代码已经上传到github.com/HobbyBear/performance-analyze&#xff0c; 接下来这段时间我将在之前内容的基础上&#xff0c;结合自己在…

干了外包3个月,技术退步明显...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

你觉得 Android 还有必要继续吗?

前言 这些年&#xff0c;总是听到有人说Android 开发岗位要凉了&#xff0c;不好做了。坦白说&#xff0c;市场倾向理性&#xff0c;竞争变强是很正常的事。但你发现总有些人&#xff0c;他们拿的 Offer 薪资是更高的&#xff0c;能达到年薪五六十万&#xff0c;甚至年薪百万。…

贪心算法总结篇

文章转自代码随想录 贪心算法总结篇 我刚刚开始讲解贪心系列的时候就说了&#xff0c;贪心系列并不打算严格的从简单到困难这么个顺序来讲解。 因为贪心的简单题可能往往过于简单甚至感觉不到贪心&#xff0c;如果我连续几天讲解简单的贪心&#xff0c;估计录友们一定会不耐…

房地产小程序制作要点:让你轻松搭建高效营销工具

近年来&#xff0c;随着房地产市场的不断发展和壮大&#xff0c;购房者对于房产信息的需求也日益增长。为了满足这一需求&#xff0c;许多开发商推出了看房预约小程序&#xff0c;以便让购房者更加方便快捷地了解房产信息并进行预约。然而&#xff0c;如何优化购房者体验&#…

论文阅读 FCOS: Fully Convolutional One-Stage Object Detection

文章目录 FCOS: Fully Convolutional One-Stage Object DetectionAbstract1. Introduction2. Related Work3. Our Approach3.1. Fully Convolutional One-Stage Object Detector3.2. Multi-level Prediction with FPN for FCOS3.3. Center-ness for FCOS 4. Experiments4.1. Ab…

重磅!TikTok将于8月底关闭半闭环 切断外链意在电商业务发展?

自2019年开始&#xff0c;TikTok电商业务逐渐走进人们的视线&#xff0c;并引起了市场的广泛关注。作为一家短视频平台&#xff0c;TikTok能够依靠其强大的用户基数与精准的推广策略&#xff0c;将流量成功转化为商业价值。截至目前&#xff0c;TikTok电商业务已经初步形成完整…

【Java】多线程(进阶)

多线程进阶 常见的所策略乐观锁和悲观锁重量级锁和轻量级锁自旋锁和挂起等待锁自旋锁挂起等待锁 读写锁和互斥锁读写锁互斥锁 公平锁和非公平锁公平锁非公平锁 可重入锁和不可重入锁可重入锁不可重入锁 CASCAS应用实现原子类实现自旋锁 CAS的ABA问题 synchronized原理基本特点加…

ATKck靶场系列二

信息收集 nmap -sP 192.168.111.0/24 nmap -sS -T4 -A -v -p- 192.168.111.80─# nmap -sS -T4 -A -v -p- 192.168.111.80 Starting Nmap 7.93 ( https://nmap.org ) at 2023-08-29 01:46 EDT NSE: Loaded 155 scripts for scanning. NSE: Script Pre-scanning. Initiating NS…

Linux之Shell(一)

Linux之Shell Shell概述Linux提供的Shell解析器bash和sh的关系Centos默认的解析器是bash Shell脚本入门脚本格式第一个脚本脚本常用的执行方式 变量系统预定义变量自定义变量特殊变量$n$#\$*、\$$? 运算符条件判断流程控制(▲)if判断case语句for循环while循环 read读取控制台输…

几种Go版本管理工具

缘起: 编译下面这段代码时,在Mac上没有什么问题,正常运行, 点击查看代码: package mainimport ( "bytes" "encoding/binary" "encoding/json" "fmt" "log" "math/rand" "net/http" "time")fu…

740212LD、740214、740214D、740214L比例插装线圈放大器

740212、740212D、740212L、740212LD、740214、740214D、740214L、740214LD、740228、740228D、740228L、740228LD、740612、740612D、740612L、740612LD、740614、740614D、740614L、740614LD线圈绕组采用N级(392 F [200 C]等级) 电磁线。 需要配对的电源线缆&#xff0c;该线…

ETC reset

ETC重新激活 换前挡风玻璃膜会把ETC设备拿下来&#xff0c;需要到【ETC服务中心】重新【粘上去】&#xff0c;另外需要工作人员用手持终端【重新激活】 ETC 背面有个 【白色】开关小柱子&#xff0c;一旦拆下来就失效&#xff0c;因为这个开关弹出来了 截面图看就是这样的&…

day 30 动态GDP柱状图绘制

列表.sort(key选择排序依据的函数&#xff0c;reverseTrue|False) 参数key:要求传入一个函数&#xff0c;表示将列表的每一个元素传入函数当中&#xff0c;返回排序的依据&#xff0c; 参数reverse,是否反转排序结果&#xff0c;True降序&#xff0c;False升序 my_list [[&…

linux下启动mysql不成功

最近在linux安装mysql数据库时&#xff0c;启动mysql&#xff0c;总是不成功&#xff0c;报如上所述问题&#xff0c;经过一番排查&#xff0c;最终是权限问题&#xff0c;将mysql目录下&#xff0c;统一修改为root权限。

C语言面向对象的编程思想

面向对象编程 面向对象编程Object-Oriented Programming&#xff0c;OOP&#xff09; 作为一种新方法&#xff0c;其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征&#xff0…