BUUCTF刷题Crypto篇


文章目录

  • BUUCTF刷题Crypto篇
  • 前言
  • 一、原题
  • 二、解题步骤
    • 1.求解移位之前的字符串
    • 2.暴力破解找出做md5之前的明文
  • 总结

前言

从今天起记录一下自己做过的印象比较深刻的题目吧!
本题来自BUUCTF,Crypto部分,题目在第2页,叫rot


一、原题

下载题目文件打开后内容如图:

二、解题步骤

1.求解移位之前的字符串

根据题目名称叫“rot”,可以初步判断给出的数字可能是十进制ascii码,然后还要经过移动一定的位数来得出明文。先写Python脚本来处理一下这串数字,然后借助循环遍历不同的移位位数。

代码如下:

c='83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112'
l=c.split(' ')    #去掉空格放入list中方便转字符,要注意split之后产生的list中每个元素都是str
s=''
for i in range(len(l)):    #逐个先转int,再转字符后又组成字符串s+=chr(int(l[i]))
for i in range(1,14):    #这里是因为我后来已经知道是rot13,所以这里就只循环到13方便看一下结果for j in range(len(s)):print(chr(ord(s[j])-i),end='')print()

当然啦,先移位再转换成字符输出,步骤更少更简洁:

'''先移位再转换成ascii字符步骤更简单'''
for i in range(1,14):s=''for j in range(len(l)):s+=chr(int(l[j])-i)print(s)

输出的结果中合理的是:
FLAG IS flag{www_shiyanbar_com_is_very_good_???}
MD5:38e4c352809e150186920aac37190cbc

发现有未知的部分,并已知了md5的结果,看来还需进一步求解才能拿到flag。

2.暴力破解找出做md5之前的明文

四层循环遍历ascii码在33-126范围的可见字符,拼接字符串,借助Python中已有的函数(注意要记得import hashlib)计算md5值,找出与上一步得到的MD5相等的结果,最终输出的运行结果为:
flag{www_shiyanbar_com_is_very_good_@8Mu}

备注:
这个脚本在我的电脑上大概运行30多秒之后出结果,得到结果(找到@、8、M、u)前一共会执行25955553次,也就是(64-33)*94**3+(56-33)*94**2+(77-33)*94+(117-33+1),是不是很清晰呢?
**是代表乘方运算,同Python中的写法
代码如下:

import hashlib
s='flag{www_shiyanbar_com_is_very_good_'
m='38e4c352809e150186920aac37190cbc'def revmd5():#count=0for i in range(33,127):for j in range(33,127):for k in range(33,127):for n in range(33,127):#count+=1#print(count)a=s+chr(i)+chr(j)+chr(k)+chr(n)+'}'#print(a)ha=hashlib.md5(a.encode()).hexdigest()if(ha == m):print(a)return
revmd5()

留个运行结果图的纪念~

总结

以上就是今天要记录的全部内容了~

BUUCTF_Crypto题目:rot相关推荐

  1. BUUCTF_Crypto题目题解记录1

    BUUCTF刷题Crypto篇 文章目录 BUUCTF刷题Crypto篇 前言 一.[NCTF2019]childRSA 1.先记录代码里不会的知识点 2.什么是费马小定理 3.解题思路 二.[HDC ...

  2. rot密码-buu rot

    rot 密码类似于凯撒密码,也是通过移位来对明文进行加密.在具体解题时可以编程枚举来确定是通过移多少位来进行加密的,同时在每一次移位的过程中可能会流露出不同的信息,这点在解密时特别注意 首先拿到题目, ...

  3. 题目1164:旋转矩阵

    题目描述: 任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0.90.180.270),如果不是,输出-1. 要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间 ...

  4. [省选前题目整理][清橙A1303]tree(LCT)

    题目链接 http://www.tsinsen.com/A1303 思路 非常好的LCT模板题... 乘法和加法lazy tag是可以叠加的,这个做法和线段树的lazy tag叠加是完全一样的... ...

  5. CTF 每日一题 Day44 rot

    题目名称:rot 题目类型:Crypto 题目来源:BUUCTF 题目描述:注意:得到的 flag 请包上 flag{} 提交

  6. 计算几何从入门到入土(题目)

    代码中的板子参考了繁凡和俊杰带佬的板子 二维基础 A.计算几何spj hacker 题意: 输入一组数a,b使无论ans为任何数,以下函数都返回AC. // a and b are outputed ...

  7. buuctf——rot

    题目 破解下面的密文:83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 1 ...

  8. CTF密码学题目初探(二)

    CTF密码学题目初探(二) 密码学总结(一) 1.换位加密 2.替换加密 密码学总结(一) 在上一篇文章里写了12种常见的编码,这一篇文章主要总结换位加密和替换加密. 1.换位加密 栅栏密码(Rail ...

  9. LeetCode简单题之完成一半题目

    题目 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动.主办方提供了 2N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型. 若每位扣友选择不同的一题,请返回 ...

最新文章

  1. Android.mk 用法介绍
  2. AI 经典书单 | 人工智能学习该读哪些书
  3. 【LeetCode每周算法】两数相加
  4. RSA算法原理——(2)RSA简介及基础数论知识
  5. notepad++节点_在C ++中删除链接列表的中间节点
  6. 建筑建模学习笔记2——3DMax房屋框架建模
  7. Windows下用cmd命令安装及卸载服务
  8. 基于ip子网划分vlan
  9. 【小5聊】CSS基础之设置小箭头图标
  10. 一个在线运行的Taro小程序完整实例
  11. office2010安装出现错误1935的解决方法
  12. J6412四网口迷你主机折腾虚拟机教程
  13. WWDC2019:离开手机,苹果靠什么“挽尊”
  14. ANSYS_APDL在绘制 vonMises(等效)应力云图报错:The requested data S is not available.The PLES command is ignored.
  15. 安卓开发实战讲解!首发10万字Android开发实战文档,完整版开放下载
  16. 学习-浏览器的同源政策
  17. 乌龟喂食规律:乌龟多久喂一次?
  18. 关于技术博客--找工作--这些年--陆续的
  19. android备忘录教学_Android Studio-备忘录功能实现
  20. MAPGIS二次开发常见问题汇总

热门文章

  1. 在计算机中字节的英文名称是bit么,计算机中的字节是常用单位,它的英文名字是( )。A.bitB.byteC.boutD.baud - 试题答案网问答...
  2. TVS管的定义及使用注意事项
  3. zynq操作系统: jffs2文件系统的错误异常
  4. 蓝桥杯单片机比赛学习:9、PCF8591的基本原理和使用方法
  5. WIFI模块中AP模式和STA模式的区别
  6. SARScape中用sentinel-1数据做SBAS-InSAR完整流程(1/2)
  7. pip 安装时报错Double requirement given: numpy==1.12.1....
  8. 【计算机网络相关】内网穿透介绍以及使用FRP实现内网穿透Windows远程桌面
  9. 安卓基础到入门学习(复习笔记)
  10. 打鼹鼠————牛客OJ