这是第三篇的BUUCTF-Crpto学习笔记了,希望能坚持下去

一、[GKCTF2020]小学生的密码学

打开题目,得到信息如下:

#题目原文
e(x)=11x+6(mod26)
密文:welcylk
(flag为base64形式)

如果你有做过类似的题目,看到题目这个格式很容易就能猜到这是仿射密码。其中a是11,b是6,直接通过在线的解密工具进行解密就能得到明文sorcery,然后再拿到在线base64的网站进行编码,最后得到答案为c29yY2VyeQ==。

二、传统知识+古典密码

打开题目需要下载文件,文件信息如下:

#题目原文
小明某一天收到一封密信,信中写了几个不同的年份
辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。
信的背面还写有“+甲子”,请解出这段密文。
key值:CTF{XXX}

看到很明显就是天干地支纪年法,网上百度一下对应的数字

得到对应如下:
辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳
28    30    23    8    17   10   16  30
甲子
1

考虑了如果把甲子当成1的话,得到的数值完全达不到ASCII的范围。所以考虑将一甲子当成60一个轮回,+60。写以下脚本,得到XZSDMFLZ。

a = [28,30,23,8,17,10,16,30]
flag = ''
for j in a:flag += chr(j+60)
print(flag)

然后题目讲了除了传统知识外,还有一种古典加密方式。那这种没有其他密钥的古典加密,很容易想到栅栏和凯撒。但栅栏只是顺序改变,里面的字母不会变。这里面的字母这么拼都感觉不像一个单词,所以用凯撒解密,最后找到一个比较像单词的答案SUNYHAGU。

三、信息化时代的步伐

题目打开需要下载文件,文件信息如下:

#题目原文
也许中国可以早早进入信息化时代,但是被清政府拒绝了。
附件中是数十年后一位伟人说的话的密文。
请翻译出明文(答案为一串中文!) 注意:得到的 flag 请包上 flag{} 提交
606046152623600817831216121621196386

查看长度是36位,那么应该是每三个数字一组或者每两个数字一组。但如果是三个数字一组的话,第一组是606感觉不太像。那应该就是每两个一组。一开始尝试过先转成ASCII,然后进行凯撒解密。但发现行不通,百度了一下后才发现有个叫中文电码的编码方式。使用在线网站http://code.mcdvisa.com,查到结果为计算机要从娃娃抓起。

四、RSA1

打开题目需要下载文件,文件信息如下:

#题目原文
p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

题目里面有dp、dq、p、q、c这几个参数,其中dp不是d*p而是d%(p-1),dq为d%(q-1),很容易想到是RSA题目中的dp泄露,直接通过脚本计算,得到16进制然后转成字符串为noxCTF{W31c0m3_70_Ch1n470wn}。

import gmpy2
p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)
m = (((mp-mq)*I)%p)*q+mq
print(hex(m))

五、凯撒?替换?呵呵!

点击题目,得到题目信息如下:

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}
注意:得到的 flag 请包上 flag{} 提交, flag{小写字母}

看题目不是应该不是普通的凯撒和替换,但是又没有给我们密码的对照表。所以扔到词频分析网站https://quipqiup.com。然后在Clues中填入MTHJ = FLAG这样能更加准确的还原。最后得到flag substitution cipher decryption is always easy just like a piece of cake。

六、old-fashion

点击题目需要我们下载文件,文件信息如下:

#题目原题
Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmyew, mebhsymw rd symmyew, vbomgeyw rd mjy lxrzy, lfk wr dremj. Mjy eyqybzye kyqbhjyew mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

题目应该是一大段英文,但相关字母完全不对。所以第一时间就考虑拿去词频分析,看最后一段话应该是XX the flag is xxxxxx。所以在词频分析网站https://quipqiup.com中Puzzle:填入密文,Clues填入mjy=the dsln=flag bw=is。最后得到分析后的明文n1_2hen-d3_hu1-mi-ma_a。其实好像填Puzzle也能分析出来,但是填的话会正确很多。

七、权限获得第一步

点击题目需要我们下载文件,文件信息如下:

Administrator:500:806EDC27AA52E314AAD3B435B51404EE:F4AD50F57683D4260DFD48AA351A17A8:::

这个一看就是Windows系统下保存用户名和密码里的文件,直接拿后面的md5去网站https://www.cmd5.com进行解密,最后得到结果是3617656。

八、萌萌哒的八戒

点击题目提示如下,并要我们下载一个附件里面是一个图片:

萌萌哒的八戒原来曾经是猪村的村长,从远古时期,猪村就有一种神秘的代码。
请从附件中找出代码,看看萌萌哒的猪八戒到底想说啥。
注意:得到的 flag 请包上 flag{} 提交


如果做过类似题目的,很容易就猜到这个其实是猪圈密码。直接拿对照表解密,得到的结果是whenthepigwanttoeat。

九、[BJDCTF 2nd]灵能精通-y1ng

点击题目提示如下,并要我们下载一个附件里面是一个图片:

身经百战的Y1ng已经达到崇高的武术境界,以自律克己来取代狂热者的战斗狂怒与传统的战斗形式。
Y1ng所受的训练也进一步将他们的灵能强化到足以瓦解周遭的物质世界。借由集中这股力量,Y1ng能释放灵能能量风暴来摧毁敌人的心智、肉体与器械。


如果做过类似题目的,很容易就猜到这个其实是圣堂武士。直接拿对照表解密,得到的结果是IMKNIGHTSTEMPLAR。

十、RSA3

点击题目需要我们下载文件,文件信息如下:

#题目原题
c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1=11187289
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2=9647291

可以看到题目给了n、c1、e1、c2、e2,看到条件很容易想到这是共模攻击。就是给定一个n,然后用不同e生成不同的公私钥,加密同一段明文得到两段不同的密码C1、C2。使用共模攻击的脚本解密,得到16进制,然后放到在线16进制转字符串的网站进行转换,得到lag{49d91077a1abcb14f1a9d546c80be9ef}。

from gmpy2 import invertdef gongmogongji(n, c1, c2, e1, e2):def egcd(a, b):if b == 0:return a, 0else:x, y = egcd(b, a % b)return y, x - (a // b) * ys = egcd(e1, e2)s1 = s[0]s2 = s[1]# 求模反元素if s1 < 0:s1 = - s1c1 = invert(c1, n)elif s2 < 0:s2 = - s2c2 = invert(c2, n)m = pow(c1, s1, n) * pow(c2, s2, n) % nreturn mdef hex_to_str(s):return ''.join([chr(i) for i in [int(b, 16) for b in s.split(r'/x')[1:]]])n= 22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1= 11187289
e2= 9647291
c1= 22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
c2= 18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
result = gongmogongji(n, c1, c2, e1, e2)
result = hex(result)
print(result)

BUUCTF-Crypto学习笔记(三)相关推荐

  1. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  4. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  5. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  6. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  7. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

  10. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

最新文章

  1. 【连载】【黑金动力社区原创力作】《液晶驱动与GUI 基础教程》 --序言(一)
  2. java多线程yield_Java多线程yield
  3. DJANGO用户名认证一例
  4. 中美数据中心产业对比及思考
  5. 「网络流24题」 题目列表
  6. ie浏览器模拟器_航空飞机模拟器安卓版下载-航空飞机模拟器游戏下载
  7. Python:通过SNMP协议获取H3C、华为交换机的VLAN信息及ARP地址表
  8. 《零基础》MySQL NULL 值处理(二十一)
  9. 计算机报名忻州考点,2020山西省考忻州考区考点安排
  10. iPhone 13系列电池容量最高4350mAh 较iPhone 12提升近20%
  11. 不戴眼镜听不清?Google用视觉信号分离语音 | 附论文
  12. MagicDraw-用例图
  13. java实现正六面体染色
  14. “数字江豚”背后的最严禁渔令!华为云助力武汉打响生态保卫战
  15. python 调用航空公司的接口 获取机票数据 api简单案例
  16. Shell bash和sh区别
  17. Python练习14:天天向上的力量I
  18. Docker容器入门及网易最佳实践
  19. 用大数据建设“安全”生态 亿赛通出席安徽省通信学会大数据学术交流会
  20. iOS 2020iPhoneX、iPhone12刘海适配,底部安全区域高度

热门文章

  1. Centos7-SELINUX setenforce 0命令导致无法访问vsftpd
  2. python定义静态变量_对Pyhon实现静态变量全局变量的方法详解
  3. SpringMVC+vue实现前后端分离的游戏论坛平台
  4. 树莓派通过网线直连笔记本电脑共享上网
  5. 数据结构之栈 篇四——栈应用实现进制转换
  6. f开头的流媒体软件_流媒体服务引擎
  7. python读取word的方法,Python读取Word(.docx)正文信息的方法
  8. JS闭包+常见面试题
  9. smartctl命令
  10. 前端组jsjQuery测试