04Reverse基础(五)

任务内容

1.完成攻防世界 REVERSE 新手区 12道题目并编写WriteUp。(网上有其他人写的WP,可以参考着学习,做完这些题再回过头做之前的四题)
2.学习密码学知识,推荐阅读书籍《图解密码学》,阅读第一章、第二章
3.阅读书籍《程序员的自我修养》

学习笔记

一、《图解密码学》

第一章 环游密码世界
1.2密码
Alice与Bob
在这里插入图片描述
1.3对称密码与公钥密码
1.对称密钥是指在加密与解密时使用同一密钥的方式
2.公钥密码(非对称密钥)是指在加密与解密时使用不同密钥的方式
3.混合密码系统:二者结合
1.4其他密码技术
(1)单向散列函数:通过散列值是否和真正文件相同来验证下载的文件是否相同,是否被篡改,是否完整,而不是机密
(2)消息认证码:提供认证机制
(3)数字签名:防止伪装、篡改、否认
(4)伪随机数生成器:密钥生成
1.5密码学的工具箱
在这里插入图片描述
1.6隐写术与数字水印
1.隐写术:可以隐藏消息本身,若搞清楚了嵌入消息的方法,则可以搞清消息的内容。
2.数字水印:运用隐写术的技术,单凭此不可以进行保密。
3.结合:将要嵌入的文章进行加密生成密文,再通过隐写术将密文隐藏到图片里。
4.实质:密码隐藏的是内容,隐写术隐藏的是消息本身
1.7密码与信息安全常识
1.不要使用保密的密码算法(隐蔽式安全性危险愚蠢)
2.使用低强度的密码比不进行任何加密更危险
3.任何密码总有一天都会破解(严格说:绝对不会被破解的密码是存在的,叫做一次性密码本,但是现实不可用;另一种被认为可能造就完美的密码技术叫量子密码)
4.密码指示信息安全的一部分:还可以通过社会工程学
第二章 历史上的密码
2.2恺撒密码
1.恺撒密码是将明文中所使用的字母表按照一定的字数平移来加密的。
2.暴力破解:所有可能的密钥每一种都试一遍。
2.3简单替换密码
1.简单替换密码就是字母之间有一种一一对应的关系。
2.简单替换密码很难通过暴力破解来破译,因为密钥数量过多,一种密码能够使用的所有密钥的集合称为密钥空间。
3.频率分析可以破译简单替换密码:
(1)首先统计密文中每个字母出现的频率
(2)再找到英语中单词或字母出现的频率
(3)二者对应替换
一些结论:
(1)高频和低频字母都可作为线索
(2)开头和结尾可作为线索,还有单词之间的分隔
(3)密文越长越容易破译
(4)同一个字母连续出现能够成为线索
(5)破译的速度会越来越快
2.4Enigma
1.它使用可以完成加解密两种操作的工具。
2.构造:
在这里插入图片描述
接线板:改变接线方式来改变字母对应关系
3.加密方式:
在这里插入图片描述
(1)设置Engima:每日密码对接线,转子进行排列
(2)加密通信密码
(3)重新设置Engima
(4)加密消息
(5)拼接:通信密码+加密后的消息拼接
注意:每日密码与通信密码是两种不同的密钥:每日密码不是用来加密消息的,而是用来加密通信密码的,即加密密钥的密钥(称为密钥加密密钥,两重加密)。即每日密码加密通信密码,通信密码加密消息。
4.解密方式
在这里插入图片描述
(1)分解成两部分:通信密码+消息
(2)设置Engima
(3)解密通信密码
(4)重新设置Engima
(5)解密消息
5.弱点:
(1)只有一个转子会旋转
(2)将通信密码连续输入两次并加密
(3)通信密码是人为选定的
(4)必须派发国防军密码本1
6.破译
艰难:因为设计不依赖于隐蔽式安全性:只要不知道Engima的设置(密钥),就无法破译。
2.5思考为何将密码算法与密钥分开
在这里插入图片描述
答案:希望重复使用,并且不会增加风险。

二、《程序员的自我修养》

6.操作系统的两个功能(尽可能的发挥CPU Memory IO的潜力):
(1)提供抽象的接口
(2)管理硬件资源
①CPU:由分时操作系统转向实时操作系统的发展;
②内存管理:(要解决的问题是如何将计算机上有限的物理资源分配给多个应用程序来使用),由直接使用物理内存再到虚拟地址空间(控制虚拟地址到物理地址的映射过程)的出现,再到分段–分页–段页式等一系列的发展;
③IO:设备驱动的发展,应用程序员是不需要与硬件直接打交道的,在如今的操作系统中,硬件被抽象成一系列概念,在Unix中,硬件也被抽象成文件,所有繁琐的硬件交互都是由硬件驱动程序来完成的。

任务实现

一、IDA补充学习

1.关于静态分析和动态分析:
静态分析就是通过浏览程序代码来理解程序的行为,查看的就是反汇编之后的代码。
动态分析是指在严格控制的环境(沙盒)中执行恶意软件,并使用系统检测实用工具记录其所有行为。
2.关于交叉引用:查看字符串(shift+12),然后按“x”看看还在哪些其他地方出现过,而后可以点进去用F5反汇编,反汇编代码中的数字可以用“r”(查看ASCⅡ值)和“h”相互切换(查看十六进制),“n”用于重命名(也可还原:用过n之后不进行输入就按ok)
3.搜索字符串:Alt+T进行搜索
4.代码段数据段
5.跳转地址:用“G”
6.如何到main函数:ctrl+E,main函数一定之前有个CommandLine,有三个参数(argc,argv,envp环境变量)

二、攻防世界 REVERSE 新手区 12道题目并编写WriteUp

001 open-source
直接找字符串strings:
在这里插入图片描述
双击进去:
在这里插入图片描述
找到答案!
002 simple-unpack
看标题就知道这题是要脱壳。
先查看一下是什么壳,winHex打开看到:
在这里插入图片描述
因此先脱壳:
003 logmein
将文件拖IDA,shift+F12
第一次进You entered the correct password!\nGreat job!\n,发现反编译出来的函数没用,所以第二次进Enter your guess:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
   
    if (argc != 4) {
   
    	printf("what?\n");
    	exit(1);
    }
    unsigned int first = atoi(argv[1]);
    if (first != 0xcafe) {
   
    	printf("you are wrong, sorry.\n");
    	exit(2);
    }
    unsigned int second = atoi(argv[2]);
    if (second % 5 == 3 || second % 17 != 8) {
   
    	printf("ha, you won't get it!\n");
    	exit(3);
    }
    if (strcmp("h4cky0u", argv[3])) {
   
    	printf("so close, dude!\n");
    	exit(4);
    }
    printf("Brr wrrr grr\n");
    unsigned int 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值