0%

CSDN闲置很久没用了,今天登上去发现大量两年前写的题解,甚是怀念,现把其全部迁移至本博客

周世杰一改以往作风,拿来点名册抽人回答问题

有节课没去的我瑟瑟发抖

信息安全基础知识

信息,信息技术(3C,传感)

信息安全:

​ 1.通信安全

​ 2.信息安全(五大属性)

​ 3.信息保障(强调过程)

网络空间安全:

​ 从信息基础设施的角度去考虑、通信设备

密码学基础知识

密码算法的分类

​ 1.对称(DES、AES)与非对称(RSA、ECC)

​ 2.分组(用于有线通信)/流密码(用于无线通信、RC4)

对称加密算法特点:加密速度快,安全性较低

非对称加密算法特点:加密速度慢,安全性较强

会话密钥:用非对称加密算法加密数据,用对称加密算法加密密钥,再把密钥分发

非对称加密算法的提出

​ 1.密钥如何安全分发,在不安全的信道上如何通信?(Merkle难题,短密钥加密长密钥)

​ 2.非对称加密算法的基本思想:数学难题(大整数因子分解,欧拉数,欧拉定理,欧几里德算法)

公钥可信问题

​ PKI->证书签名(用私钥去加密证书内容的hash值)

单向函数

​ 正向计算简单,逆向计算复杂(MD5,SHA-1,王小云)

download here

有效的输入字符只有’4’,‘5’,‘W’,‘0’,读到这些字符的时候会对给定的一个字符数组进行修改。 正在用 ‘DFS’ 跑字符串,但是效率太低了,枚举到长度15以上的字符串就得跑好几个小时。 总觉得有高级做法…… 高级做法:推箱子游戏 ['W','5','4','0'] ['up','down','left','right'] s0:start a1:box1 a2:boxl2 14:target

08 08 08 08 08 08 08 08  08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08
08 08 a2 08 08 08
08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 14 08
08 08 08 s0 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 a1 08 08 08 08
08 08 14 08 08 08 08 08
08 08 08 08 08 08 08
08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08

走法:WW44W444W45555555450050W0000WWWWW55555444444WWWWWWW000050050W4W0000W0550544

download here

ida得到加密算法

# 翻译的太丑  太丑
flag=""
s_change1=""
c=0
def change1(a):
if a<64:
v1=c
c+=1
s_change1[v1]=flag[a]
change1(2*a+1)
res=change1(2*(a+1))
return res

对输入的字符串进行了一次先序遍历和一次中序遍历 出题人的意思应该是已知先序遍历和中序遍历求原二叉树。。 却没想到原二叉树是个满二叉树,直接通过一种遍历方式就可以推出原二叉树 (或者是出题人发题之前把难度降低了嘤嘤嘤,出题人别捶我别捶我) 这里只给出用先序遍历求原二叉树的代码

#include<cstdio>
char str[] = "bcec8d7dcda25d91ed3e0b720cbb6cf202b09fedbc3e017774273ef5d5581794";
char p[65];
int cnt;
void fuck(int t){
if(t >= 64) return;
p[t] = str[cnt++];
fuck(2 * t + 1);
fuck(2 * (t + 1));
}

int main(){
fuck(0);
printf("%s",p);
}

download here

下载一个dos_box 跑一跑,发现是输入flag之后对flag进行操作,之后比较和加密的字符串是否相等 对于每一位字符p ((p>>3)^(p<<5))^0xff 与 数据表中的值相等 然后暴力枚举,爆破。

(这是char变量所以注意&0xff,不然数据溢出)

table=[0xC9, 0x68, 0x8A, 0xC8, 0x6F, 0x07, 0x6, 0xF, 0x7, 0xC6, 0xEB,0x86,0x6E,0x6E, 0x66, 0xAD, 0x4C, 0x8D, 0xAC, 0xEB, 0x26,0x6E, 0xEB, 0xCC, 0xAE, 0xCD, 0x8C, 0x86, 0xAD, 0x66, 0xCD,0x8E, 0x86, 0x8D, 0xAF]
ans=""
for i in range(0x23):
for p in range(32,127):
if ((p>>3)^(p<<5))&0xff==table[i]:
ans+=chr(p)
break
print(ans)

商用软件 Vector Magic (点我下载) 可以将位图矢量化。

要求

  • 破除Trial版本的广告窗口与使用限制,让程序表现与购买版本完全一致。(获得基础分值)
  • 在上一条的基础上,将程序标题改为 Vector Magic Edition,主界面 More Options->About Vector Magic Desktop Edition 窗口最底部显示 Registered to 。(获得150%基础分值)

破解过程

​ 最开始的思路是把注册(activate)的过程patch掉,搞了很久玄学出不来结果,连注册成功对话框都出了,软件还是注册不成功。

​ 后发现About中有关于是否注册的字符串提示,故搜索,发现其每次会调用一个验证函数A,patch掉即可,如此一来保存功能便可以使用了。

​ 然而程序左上角仍然存在一个trial version 的窗口,这是整个破解过程中卡我最久的地方。我曾去调试了整个窗口生成的全过程,发现并没有任何判断函数参与,特别是我patch的那个验证函数A。

​ 没想到验证函数A里面还嵌套了一个验证函数B(哭 。生成广告的过程与A无关而与B有关,然而我在查看A时并没有发现该判断。这是因为ida F5把test al,al 指令识别为了某一个函数的参数,从而我没有发现if条件语句,每每想到这里我就是一阵唏嘘。tm的以后再也不用ida去调长代码了! (真香

​ 关于更改标题,搜索字符串即可。心得:如果修改后的字符串比原来长,可以找一块空白的内存将字符串贴上去,并且改汇编代码使其指向新地址。

总结

动态调试就是玄学,靠运气。以后做题前最好吸吸欧气^ ^

在宝塔面板中打开了https,还在wordpress中把网站地址改成了https开头,没想到整个网站都上不去了。只好重新搭建,结果依旧,最后查询发现https协议要通过443端口,原来和shadowsocks冲突了,改掉ss端口,解决。

这是mrh929的第一篇博客,受yypE学长的网站所启发(其实是他扔给我了一篇教程),利用一下午时间+9元域名注册费完成了这个具体而微的网站。 以后的学习之路还很漫长。Let’s get started!