攻防世界——CRYPTO新手练习区解题总结<3>(9-12题)
第九题easychallenge:

下载附件,得到一个后缀为pyc的文件,上网百度一下pyc文件,得知
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,运行加载的速度会有所提高;另一反面,把py文件编译为pyc文件,从而可以实现部分的源码隐藏,保证了python做商业化软件时的安全性
知道可将pyc反编译为py文件
pip install uncompyle6
安装好uncompyle6后,
输入命令uncompyle6 -o . 123.pyc
(123.py就是下载的附件)

成功反编译,这时候可以看到文件夹中新出现的文件

打开

得到密文,那么怎么解密呢?只要将整个程序的过程倒过来就可以了
该程序中存在异或与加运算,倒过来的时候异或还是异或,加变成减就可以了,大约就是这个样子

运行一下,发现有错误

好像在encode3(final)之后就出现了错误
输出encode3(final)看一下,原来encode3(final)返回的类型为types,而ord需要一个长度至少为1的字符串

我们将encode3(final)是改成encode3(final).decode(),运行一下发现依然有错误

说是'utf-8'不能解码0xa0,上网搜一下
UCS字符U+0000到U+007F(ASCII)被编码为字节0×00到0x7F(ASCIⅡ兼容)。
也就是只能解码0-127,而0xa0为160(不确定这个说法对不对)
上网再搜一下,找到
ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
发现这个ISO-8859-1能解码0xa0,用这个解码试一试

可以运行了,得到flag
第十题转轮机加密:

下载附件 ,得到密文

由题目可是转轮机加密
转轮机密码,这里简单说一下,就像上面这个图,一共是给了十三行字母,我们还发现每一行字母都是完整的二十六个,那么我们就可以把这十三行字母看成是我们行李箱上的可以转动的密码锁(可以理解为密码是英文的行李箱密码锁),每一行都可以转啊转,每一列也就可以组成不同的字段(其中也就包含我们所需要的明文,也就相当于是我们行李箱上的正确密码),我们只需要转到正确的位置就是密码了。
那么怎么样才是正确的位置呢,这就需要密钥和密文了,我们可以发现密钥正好是十三行数字,密文也正好是十三个字母,这样的话只需要将密钥所对应的数字对准相应的行数,并将密文所对应的字母转到第一位(也就相当于密码锁要转到正确的位置上),最后将这十三行字母按照密钥的顺序排序。(可以理解为密码锁的转轮可以拆卸,且必须按照一定的顺序重新安装转轮,才能开锁,行李箱密码锁升级版)
如果还没明白的话我们手动解密一下

先以密钥的第一个数2,也就是以第二行为例

找到2对应的字母N,想象一下转轮的转动(首尾相接),将N转到第一位

其余的也这么操作,解完后的结果

当然这还没有完,还有最后一步(当做第一步也可以,没有影响)按照密钥的顺序对行排序

这就是最后的结果,我们只需要找到里面有实际意义的一段话,那就应该是我们要找的flag了(即黄色标注部分)
第十一题Normal_RSA:

下载附件,发现是一个压缩包,打开

发现一个enc文件,一个pem文件,一个都不认识
上网查了一下,大约明白,flag.enc是一个加密文件,而pubkey.pem是公钥文件,我们需要解出私钥,解密flag.enc文件得到flag
这里我们需要虚拟机,以及一些工具
工具:虚拟机,rsatool.py,OpenSSL
首先我们用OpenSSL来看一下公钥
openssl -pubin -text -modulus -in warmup -in pubkey.pem

Modulus就是n,Exponent就是e
用py直接将Modulus由十六进制转化为十进制

这时候就需要进行分解p,q了这里用这个网站分解

分解得到p=275127860351348928173285174381581152299,q=319576316814478949870590164193048041239
关于rsatool.py的安装,(我是在虚拟机中安装的)
git clone https://github.com/ius/rsatool.git
cd rsatool
python setup.py install
安装成功后,我们就可以用rsatool来生成私钥了

python rsatool.py -f PEM -o private.pem -e 65537 -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239
//private为要生成的私钥文件的名字,可以随意取
最后一句为saving as PEM as xxx.pem(xxx为私钥文件的名称)时说明私钥生成成功
这里有一个我遇到的问题

在博问中问过大神后得到答案,大家如果遇到相同的问题可以去看一下https://q.cnblogs.com/q/129227/
解出私钥后,我们用openssl解开falg.enc即可

openssl rsautl -decrypt - in flag.enc -inkey private.pem
解出flag
第十二题easy_ECC:

需要工具:ecctool 下载链接:https://bbs.pediy.com/thread-66683.htm
下载附件,打开

将所给的内容填进工具

因为给的数据都是十进制的记得将Numberbase16改成10 ,点击CALC R
得到Rx(x)和Ry(y)

将其相加得到flag
CRYPTO新手练习区解题总结完。
ps:本人新手一枚,写的题解呢也是以新人的口吻写的所以有许多地方不够专业,也可能还有许多错误,也请各位大佬多多包容,也欢迎各位大佬的指导。
攻防世界——CRYPTO新手练习区解题总结<3>(9-12题)的更多相关文章
- 攻防世界——web新手练习区解题记录<1>(1-4题)
web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...
- 攻防世界——Misc新手练习区解题总结<3>(9-10题)
第九题SimpleRAR: 下载附件后得到一个压缩包打开后得到如下提示 文件头损坏,让我们打开winhex看一下 7a为子块而文件头为74,这里将7a改为74(这里我也不是很清楚,详细大家可以自行去查 ...
- 攻防世界——Misc新手练习区解题总结<2>(5-8题)
第五题gif: 下载附件后,解压得到这样一个文件 几经寻找无果后,发现是不是可以将gif中的黑白图片看做二进制的数字,进而进行解密 最后用二进制转文本得到flag 第六题掀桌子: 看起来是16进制的密 ...
- 攻防世界——Misc新手练习区解题总结<1>(1-4题)
第一题this_if_flag: 第一题就不多说了,题目上就给出了flag复制粘贴就可以了 第二题pdf: 下载附件后,得到如下界面 Ctrl+a全选文字,复制出来看看是什么,粘贴后恰好得到flag ...
- 攻防世界——web新手练习区解题总结<3>(9-12题)
第九题simple_php: 看题目说是php代码,那必定要用到php的知识,让我们先获取在线场景,得到如下网页 仔细看这个代码,意思大概是: 1.当a==0且a为真时输出flag1 2.当b为数字退 ...
- 攻防世界——web新手练习区解题总结<2>(5-8题)
第五题cookie: 所需工具:burpsuite(需自行下载) 老规矩看完题,先获取在线场景,得到如下网页 那么什么是cookie呢?大体上就是网站为了识别用户身份而储存在用户本地终端上的数据,类型 ...
- 攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup
攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup 题目介绍 题目考点 隐写术 摩斯密码 Writeup 下载附件是PDF文件打开,研究一 ...
- 攻防世界 Misc 新手练习区 ext3 bugku Writeup
攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...
- 攻防世界 Misc 新手练习区 gif Writeup
攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...
- 攻防世界 Misc 新手练习区 坚持60s Writeup
攻防世界 Misc 新手练习区 坚持60s Writeup 题目介绍 题目考点 java反编译 jd-gui 的使用 Writeup 下载附件并打开 kali执行命令 java -jar 9dc125 ...
随机推荐
- 通俗易懂的生产环境Web应用架构介绍
前言 看见一篇非常通俗易懂且适合新手阅读的Web应用架构文章,我将其手工翻译了出来,分享给大家. 也可以去阅读英文原文,标题为,贴出链接: https://stephenmann.io/post/wh ...
- 2024-05-01:用go语言,给定两个长度为偶数n的整数数组nums1和nums2, 分别移除它们各自的一半元素, 将剩下的元素合并成集合s。 找出集合s中可能包含的最多元素数量。 输入:nums
2024-05-01:用go语言,给定两个长度为偶数n的整数数组nums1和nums2, 分别移除它们各自的一半元素, 将剩下的元素合并成集合s. 找出集合s中可能包含的最多元素数量. 输入:nums ...
- 【Vue】vuex存储和本地存储(localstorage、sessionstorage)的区别
sessionStorage sessionStorage 方法针对一个 session 进行数据存储.当用户关闭浏览器窗口后,数据会被删除. 用法: 储存: 1. 点(.)运算符 sessionSt ...
- Linux-0.11操作系统源码调试
学习操作系统有比较好的两种方式,第一种是跟着别人写一个操作系统出来,<操作系统真相还原>.<Orange's:一个操作系统的实现>等书就是教学这个的:另一种方式就是调试操作系统 ...
- 使用 Docker 部署 VS Code in The Browser
1)介绍 GitHub:https://github.com/coder/code-server 在日常学习工作中,Vscode 已成为我们首选的代码编辑器.然而,其局限性在于当我们从家到公司移动时, ...
- TeamViewer 9 和 10 即将停用 尝试切换到 Splashtop
TeamViewer 9 和 TeamViewer 10 将于2021 年 6 月 1 日到期停用.当这两个版本的 TeamViewer 到期时,用户将无法再远程访问其计算机和设备. 这意味着要继续使 ...
- 第三方调用saltstack
python api使用 实例及工作原理解析 指定target 函数,命令等等,就可以可以了. [root@mcw01 ~]# python Python 2.7.5 (default, Aug 4 ...
- 腾讯redis2.3集群搭建
环境规划: IP 主机名 组件 配置 备注 192.168.3.81 node1 8核16G 磁盘X2-50G 没有8核16G无法添加服务器 192.168.3.82 node2 cache,prox ...
- 《剑指offer - 题目1》
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Anaconda安装Python的seaborn库
本文介绍在Anaconda的环境中,安装Python语言中,常用的一个绘图库seaborn模块的方法. seaborn模块是基于Matplotlib的数据可视化库,它提供了一种更简单.更漂亮的 ...