网络攻防实验二

目录

前言

1.缺损的hash

2.编译凯撒:afZ_r9VYfScOeO_UL^RWUc,要求解出相应的密文

3.给出指定公钥文件,进行破解,求出密钥,要求用十进制表示

总结



仅供交流学习使用!!!


前言

仅供学习途中遇到类似问题的同学参考,因为自己有过乘他人阴,所以也想给有需要的人撑一把伞。

二、题目

1.缺损的hash

这里有一段丢失的sha1密文

89aa???0bfd7da1409???c8c76e0461aaf9?????

要求你还原出他的原值和hash值

已知线索 明文为: fl??{HELLO ?ORLD}

解题思路(仅供参考):

#编写python程序:

import hashlib

s="fl??{HELLO ?ORLD}"

for i in range(48,123):   #在数字(48-57)和字母(65-90),(97-122)中查找

    for j in range(48,123):    #在数字(48-57)和字母(65-90),(97-122)中查找

        for k in range(48,123):   #在数字(48-57)和字母(65-90),(97-122)中查找

            s='fl'+chr(i)+chr(j)+'{HELLO '+chr(k)+'ORLD}'

#用穷举法替换明文中的未知字符

            jiami=hashlib.sha1(s.encode("utf-8")).hexdigest()   #将字符串进行加密

#下面判断加密后的密文是否与题设匹配,这里不用考虑字符的先后顺序

#因为sha1生成的密文是散列值,一个字符的顺序变化就会导致整个密文发生改变

            if '89aa' in jiami and '0bfd7da1409' in jiami and 'c8c76e0461aaf9' in jiami:

                print("密文为",jiami)

                print("明文为",s)

编译结果 :

获得flag为: flag{HELLO WORLD}

 

2.编译凯撒:afZ_r9VYfScOeO_UL^RWUc,要求解出相应的密文

格式:flag{ }

解题思路(仅供参考):

编写C++程序查找规律:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a="afZ_r9VYfScOeO_UL^RWUc";
	string b="flag{";//已知字符
	for(int i=0;i<5;i++) //基于已知字符进行比较 
	cout<<b[i]-a[i];//比较两个字符串,输出字符串中对应字符ASCII码的差值 
}

编译运行:

找到规律!!! 

编写C++程序转换字符:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a="afZ_r9VYfScOeO_UL^RWUc";
	int n=a.size();//获得字符串长度 
	for(int i=0;i<n;i++)//遍历字符串 
	cout<<char(a[i]+i+5);//输出经过处理的字符 
}

编译运行:

获得flag为:flag{Caesar_variation}

3.给出指定公钥文件,进行破解,求出密钥,要求用十进制表示

格式ctf{密钥}

解题思路(仅供参考):

利用kali打开公钥文件

 利用工具对得到的d进行因式分解然后生成私钥

 将私钥改为10进制

获得flag为:

 Flag{406853230956379689450620815713768871010712825839536410687962650677800895818003893712259622281477453292088146173840036827322518131453630576229976208523593618949818777897059256426591560532784635697190752924923710375949616954069804342573867253630978123632384795587951365482103468722384133084798614863870775897915929475258974188300927376911833763105616386167881813301748585233563049693794370642976326692672223638908164822104832415788577945314264232531947860576966629150456995512932232264881080618006698700677529111454508900582785420549466798020451488168615035256292977390692401388790460066327347700109341639992159475755036449}


总结

本文基于大部分网络工程专业学生与计算机科学与技术专业都学习的一门课《网络攻防》,过程为老师引导,然后自己实操实现,过程难免会有不规范的地方,欢迎大佬们留言讨论!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大吃亿鲸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值