Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提交作业 #73

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions Homework/1Team/ZoEplA/2018-01-23-05.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
### 消息认证码
消息认证码简称MAC,是一种确认完整性并进行认证的技术。它可以接受任意长度的消息和一个发送者与接受者之间的共享秘钥,并输出固定长度的数据,这个数据称为MAC值。这里大家可以发现,消息认证码跟单项散列函数很像,都是接受任意长度的消息,生成固定长度的输出。只不过消息认证码需要一个发送者和接受者共享的秘钥。所以大家可以这么理解:消息认证码是一种与秘钥相关的单向散列函数。

+ 参考学习网站:
https://github.com/DigBullTech-sec0cr/Cryptology/blob/master/Tutorials/%E5%AF%86%E7%A0%81%E5%AD%A6%E5%9F%BA%E7%A1%80%EF%BC%88%E5%9B%9B%EF%BC%89.md

#### HMAC
HMAC是使用单向散列函数来构造消息认证码的方法,任何高强度的单向散列函数都可以用于HMAC。

#### PGP
PGP是一个很好用的密码软件,它几乎具备现代密码学所必须的所有功能。包括:对称密码、公钥密码、数字签名、单向散列函数、证书、数据压缩与解压等。
**信任网**
使用PGP时,确认自己得到的公钥的合法性是非常重要的。因为公钥可能会通过中间人攻击被替换。但是PGP却没有使用认证机构,而是采用信任网的形式。在这种形式中,PGP的用户会互相对对方的公钥进行数字签名。信任网的要点是不依赖认证机构,而是建立人与人之间的信任关系。

### 作业:
实践地址:
http://www.hetianlab.com/cour.do?w=1&c=C172.19.104.182014112610295700001

在CTF比赛中,还有一些诸如莫斯密码、混合编码等简单的加密方式,大家可以通过实际的编解码操作来熟悉它们。

合天平台的在线学习中的:
CTF-MISC练习之编码1
CTF-MISC练习之编码2
CTF-MISC练习之编码3
CTF-MISC练习之编码4
CTF-MISC练习之编码5


#### CTF-MISC练习之编码1
+ Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。简单地说,Exif=JPEG+拍摄参数。( 注意:Windows XP自带的文件属性选项可能无法正常查看Exif信息)
+ 访问一个目录形式的URL时,如果同时存在index.php和index.html,Apache服务器会优先解析前者
+ `string.lowercase`:生成所有的小写字母
+ 任务一:【B】反查MD5哈希值21232f297a57a5a743894a0e4a801fc3得到明文为Admin
+ 任务二:【D】同一个目录下不能同时存在多个index页面(如index.php和index.html等)
+ 任务三:【C】1688
##### 四位的md5爆破

#String模块中的常量:
#string.digits:数字0~9
#string.letters:所有字母(大小写)
#string.lowercase:所有小写字母
#string.printable:可打印字符的字符串
#string.punctuation:所有标点
#string.uppercase:所有大写字母
def crackMd5(dst):
dst = dst.lower()
for a in string.digits:
for b in string.digits:
for c in string.digits:
for d in string.digits:
word = a + b + c +d + "_heetian"
tmp = hashlib.md5(word).hexdigest()
if dst == tmp:
return word
return None
if __name__ == "__main__":
raw_input(crackMd5("158e64cfc9991940700acc5dc0f310e3"))


#### CTF-MISC练习之编码2
##### 一些知识
+ referer即HTTP来源地址,是HTTP请求头中的一个字段,用来表示从哪儿链接到目前的网页,采用的格式是URL。比如在Google中搜索“百度”,点击其中的第一个搜索结果访问www.baidu.com,那么,从百度的服务器来看,这次点击产生的HTTP请求头中的referer字段的值便是www.google.com。
+ 现在很多网站通过Referer来判断访问来源,或者是用于图片防盗链等。但是HTTP请求头可以轻易的被修改,因此Referer并不是可靠的。
+ robots.txt是一种存放于网站根目录下的文本文件,它通常用于向搜索引擎的爬虫表明,网站中的哪些内容是可以抓取的、哪些内容是不可以抓取的。robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。robots.txt中可以使用Disallow语法来告诉搜索引擎哪些内容不应该被抓取。
+ X-Forwarded-For是用来识别通过HTTP代理方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。这也是为什么有时候通过代理访问目标网站时原始IP地址仍然能够被检测出来的原因,因为代理服务器自动在HTTP请求头中增加了X-Forwarded-For字段,并把原始的IP地址设置为该字段的值。
+ [HTTP请求头响应头中常用字段详解](https://www.jianshu.com/p/6e86903d74f7)
+ 任务一:【C】可以通过referer字段的值来进行图片防盗链处理
+ 任务二:【D】单词security在九宫格输入法下对应的数字编码为7328789
+ 任务三:【D】keep_going
#### CTF-MISC练习之编码3
##### 一些知识
+ URL编码会将字符转换为百分号加十六进制的形式。通常URL中只能包含ASCII中的部分可见字符,如果URL中有汉字,就必须编码后使用。
+ MD5只有32个字符
+ [各种字符集和编码详解](https://www.cnblogs.com/happyday56/p/4135845.html)

+ 任务一:【D】6865657469616E
+ 任务二:【B】%68%65%65%74%69%61%6E
+ 任务三:【C】104 101 101 116 105 97 110
#### CTF-MISC练习之编码4

+ 任务一:【B】差异数据大小为40997字节
+ 任务二:【C】urrgvna
+ 任务三:【D】大写字母B
#### CTF-MISC练习之编码5
+ UUencode是一种二进制到文字的编码,它不是MIME编码中一员。最早在Unix 邮件系统中使用,全称Unix-to-Unix encoding。它也是定义了用可打印字符表示二进制文字一种方法,并不是一种新的编码集合。Uuencode将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。然后将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符的范围之中。跟Base64具有非常多的类似,也做了一些特殊转码说明。
+ [UUencode在线解密](http://www.mxcz.net/tools/uuencode.aspx)
+ 任务一:【D】JSFuck是一种新的编程语言
+ 任务二:【B】':&5E=&EA;@``
+ 任务三:【A】0