CTF入门——密码学基础

  • 开篇

协会纳新的人数越来越多,也直播了一些基础课程,不知道大家有没有全部看懂.初入信息安全不知道如何学是很常见的,我们竞赛的类型主要是CTF(cross the fire (o?v?)ノ2333开玩笑。。。。好吧是夺旗战  这是针对0基础的同学写的入门篇目,请大佬们轻喷~~

  • CTF介绍

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯” 。(好想去DEFCONヾ(≧へ≦)〃... ...咳)

CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容(格式一般为 flag{XXXXXX}   ),并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。

总而言是这种赛事就是通过技术手段(pwn 逆向分析 decode等)从 程序或者数据中 找到关键的字符串(flag)并正确提交。。。(●ˇ?ˇ●)

  • 水了半天了,下面进入正题。

  • (初入CTF建议先从密码学入手,下面开始讲解):

  • 古典密码学

  • 凯撒密码(移位密码):通过明文在字母表中的偏位位数加密

例如偏移量为3位的时候:A对应D,B对应E,C对应F等。。。

这个很好懂,在这里就不详细说了。

偏移量为13位的时候凯撒密码又叫 回转密码(ROT13):明文加密得到密文,密文再加密就会得到明文(因为偏移量为13位一共 26个字母,加密两次就会回到明文了),在CTF中题目关键字眼 会有回转、回旋、十三踢等字眼。

  • 摩尔斯电码(又译为摩斯密码,Morse code)用 “ . ” 和 “ - ”的排列表达26个字母和数字0-9
  • playfair密码  用5x5的表格,格子放26个字母(I 和J算一个格子 )正好放满25个格子。有密钥的话先往各自中不重复的顺序填入再按照26个字母顺序填入密钥中没有的其他字母     例如密钥为:crazy dog

对明文加密规则如下:

1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc

2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。

3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。

依照上表,明文where there is life,there is hope.

可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX

然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY

将密文变成大写,然后几个字母一组排列。

如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY

解密过程逆过来就OK了~

  • 栅栏密码就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
  • 一般比较常见的是2栏的栅栏密码
    比如明文:THERE IS A CIPHER
    去掉空格后变为:THEREISACIPHER
    两个一组,得到:TH ER EI SA CI PH ER
    先取出第一个字母:TEESCPE
    再取出第二个字母:HRIAIHR
    连在一起就是:TEESCPEHRIAIHR
    • 维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式
    • 为了生成密码,需要使用表格法。这一表格(如图1所示)包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。

      例如,假设明文为:

      ATTACKATDAWN

      选择某一关键词并重复而得到密钥,如关键词为LEMON时,密钥为:

      LEMONLEMONLE

      对于明文的第一个字母A,对应密钥的第一个字母L,于是使用表格中L行字母表进行加密,得到密文第一个字母L。类似地,明文第二个字母为T,在表格中使用对应的E行进行加密,得到密文第二个字母X。以此类推,可以得到:

      明文:ATTACKATDAWN密钥:LEMONLEMONLE密文:LXFOPVEFRNHR

      解密的过程则与加密相反。例如:根据密钥第一个字母L所对应的L行字母表,发现密文第一个字母L位于A列,因而明文第一个字母为A。密钥第二个字母E对应E行字母表,而密文第二个字母X位于此行T列,因而明文第二个字母为T。以此类推便可得到明文。

    • 目前古典密码先介绍这么多吧

原文地址:https://www.cnblogs.com/threesoil/p/9857897.html

时间: 2024-10-10 02:02:57

CTF入门——密码学基础的相关文章

CTF入门指南

转自http://www.cnblogs.com/christychang/p/6032532.html ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web密码学pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等misc 杂项,隐写,数据还原,脑洞.社会工程.与信息安全相关的大数据reverse 逆向windows.linux类ppc 编程类的 国内外著名比赛 国外:国内:xctf联赛 0ctf上海国内外都有,很强 入门需要哪些基础

CTF入门(一)

ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web密码学pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等misc 杂项,隐写,数据还原,脑洞.社会工程.与信息安全相关的大数据reverse 逆向windows.linux类ppc 编程类的 国内外著名比赛 国外:国内:xctf联赛 0ctf上海国内外都有,很强 入门需要哪些基础: 1.编程语言基础(c.汇编.脚本语言)2.数学基础(算法.密码学)3.脑洞大开(天马行空的想象.推理解

Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编译,所以借此篇内容说明一下原由并为之后文章的学习做准备. 即使本片内容只是在围绕一个小小的HelloWorld程序开展,但还是希望朋友们不要急于求成,"欲速则不达". 文章整体思路: 我们循序渐进地来看,一个Qt应用的完成有以下一个重要的步骤: 项目创建->源码编译->程序运行

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装

转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且允许真正地组件编程.基本上,Qt同X Window上的Motif,Openwin,GTK等图形界面库以及Windows平台上的MFC.OWL.VCL.ATL是同类型的东西. 本系列教程以Qt5.6为基础展开精讲. 参考书目: [1]霍亚飞.Qt Creator快速入门(第3版).2017年 [2]蔡

密码学基础

1 加密技术概述 一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性. 对纯数据的加密的确是这样.对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据. 但是,软件的加密不同于数据的加密,它只能是"隐藏".不管你愿意不愿意让他(合法用户,或 Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器,它就必须是明文.既然机器可以"看见"这些明文,那么 Cracker,通过一

HBase入门修行基础篇

HBase入门修行基础篇 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力.HBase是Apache的Hadoop项目的子项目.HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是H

Java入门——面向对象基础(一)

Java入门——面向对象基础(一) 本博客目的 练习题(重要) 面向对象的概念(了解) 面向对象的三大特性(重要) 2016-09-10——13:13:39 ll练习题 用方法调用的形式进行数组排序 1 package Sep10; 2 //调用方法完成两个整形数组的排序并打印 3 public class ArrayRefDemo03 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // T

Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二

开始部署 上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:Android端开发环境配置一 http://blog.csdn.net/jaikydota163/arti