曼切斯特编码题目--波利比奥斯方阵密码脚本爆破--zip伪加密题目--音符编码+连续base64编码+url编码题目--web过滤注入题目_百变马丁同学的博客-爱代码爱编程
目录
曼切斯特编码题目
1.题目发现是曼切斯特编码,将密文转2进制后进行解密
2.后将16进制转字符可得flag
3.尝试敲代码实现解码实现了解曼彻斯特编码,10为1,01为0
将密文转化为2进制,再两位进行一个划分进行曼彻斯特编码,再转化为十六进制再转字符
波利比奥斯方阵密码脚本爆破
1.发现有一个base64编码提示解密后
2.提示说明文长度有14位,观察密文长度有28位。推测是波利比奥斯方阵密码,但不知道秘钥。波利比奥斯方阵密钥特征:密钥是密文中每一种字符。
3.脚本思路,通过枚举密钥进行破解
4.发现脚本中有好用的代码思路,可以利用进行以后的解密思路,在此进行详细分析
分开字符串
查找字母在字符串的位置
题目总结:使用itertools.permutations()与for循环可以进行不同排序,jojn()函数可以分开字符串中的每个字符也可以反过来,index()函数用于查找()内的字母第一次出现的位置。
Zip伪加密题目
1.推测可能是伪加密用010打开后发现有两个504B0304和504B0102,两个504B0304后面红框显示没有加密。只有第二个504B0102中显示加密文件,将09改成00即可获得flag
题目总结:如果504B0304后面方框判断有无加密有9则是加密,而是504B0102后面的方框则是进行显示有没有加密
音符编码+连续base64编码+url编码题目
1.发现压缩包里有压缩包
2.打开压缩包发现有一个图片可以解压
3.打开图片发现是2020的数字,猜测可能是当前压缩包的密码。解压后获得了一个压缩包里的文件
4.打开doc发现是音符编码,https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue使用在线工具得
5.音符解码后本以为是base64编码发不是,想到rabbit编码特征末尾也可能有等于号,无秘钥解码发现不对,尝试输入秘钥2020得到压缩包密码
6.发现只解密出来一个文件,另一个flag文件并没有解出来,发现解出来的文件是base64编码,经过连续6次base64次解码后得到url编码再次解密获得了flag文件的压缩包密码。
发现后面几次进行base64解码时,有%不能进行转换,需要换一个工具。
题目总结:当发现符合这个编码但使用工具进行解码解不出来时,先观察是什么字符影响了。有些工具识别未知字符会不能解码,不能将未识别字符直接输出。
Web过滤注入题目
1.发现index.php泄露查看源代码,分析发现过滤了关键字符。需要在 username 框构造语句成功登录就能得到 flag
2.这里注入1'/**/or/**/1=1/**/group/**/by/**/password/**/with/**/rollup/**/#即可获得flag
语句分析:group by 后可以跟with rollup,可以在进行分组统计的基础上再次进行汇总统计。达到的结果就是通过加入 with rollup 使 sql 语句查询结果 password 有一行为是 null ,在不输入 password 情况下就能达到源码中的条件
复习:
RSA
加密公式:C = pow(c,e,n)
解密公式:m = pow(c,d,n)
N=p*q质数相乘
欧拉函数T=(p-1)*(q-1)
计算私钥D的公式:d = gmpy2.invert(e,t)/ (d * e) mod t = 1
公钥E的条件:质数,1<公钥<T
当e=1时并且m<n时:明文=密文
费马定理分解n:1.a= gmpy2.iroot(n,2)[0] 循环 2.b方= pow(a,2)-n,如果b不是平方数a+1。如果是平方则开根号得b=gmpy2.iroot(B2,2)[0],得出p=a+b。q=a-b