CTF欢乐赛-密码学-哈希哈希题解
1、下载源文件后拿到一个数组和一个salt=131,因为给的是一个数组,我们可以猜测这个是hash字符串的前缀和
hash1[34]={1,137,17961,2352894,308229132,40378016292,5289520134276,692927137590175,90773455024312932,11891322608184994096,8236759480631890849,9104335687623707495,12076354361294378429,14029175064251686857,11594270119725368294,6216371639840014010,2687945575821564212,1632733032143431075,10973842399984403068,17174060722321327476,17745921705238153833,425990098794648510,464470720970299981,5505432225980642670,1788602728791676750,12946028587195034875,17276034214980371573,12657705169863378919,16399154691952544583,8466952095475352928,2366080084698136616,14808585916103070846,3016627269999361153,7796546822015727126}; salt=131
题目提示是hash题,这个数组的首个是为1,salt给出的又是hash常见的131素数。
我们日常最常见的字符串hash求前缀和的操作是
p即可视为我们的salt,mod数一般是极大的素数或者使用unsigned long long 的自动溢出法
根据上述的hash[i]的求法,我们可以根据前缀和逆推求出每一位的原字符串
即当我们要求0<=l<=r<=n 的l-r上的hash值时有如下公式
当l==r的时候即可求出单个字符的hash值即原值
通过脚本可得出原数组,数组值在0-25之间,即代表a-z,得出原字符串为
godsaythereislightandthereislight
将此字符串输入压缩文件密码中,解开压缩文件,发现一个网址与一个图
https://www.cnblogs.com/post/ReadAuth?blogId=463042&PostId=12524932&url=%2FNever-Land%2Fprotected%2Fp%2F12524932.html
其实这个是古埃及文,对应古埃及字母表可翻译出原文
magichash
得到后进入网页中
L.OeOeKhItNhTtHiYwGsLeAiSdSe,gaanmditeenlilhtthdenfaa,ceeltghnoiusveiieDw,eesbtoNtotwoinsdtehre'tbimmeemtehraetvfialcueoshhtofuiltdufBo.remmaintontehdelro,gWyhhotsseifhrte,ssherlekpnaiirrwiffoneotwitphsoeuDr,eeneeswtelsath,sTehgoauednoishttbfeogsuwioldentihwehwgourolrdh,tuunobhlteosSs;seommiermportehhefro.lFiorrpwAhyelreevioslsehhetskocfaabisrlwlhaoCseeeuhntenaireehdswdonmab,Dsissadlagisn'srtehhettoimlylhatgteroafutohhyTh?uystbiarnedtrsyo?pOprowthsooits,heevsoolf-ofnldewsislilhbfeOt,h}erteokmcbafhl_adga{b
观察文章的开头0 2 4 6 8 10等字符,是LOOK IN THY GLASS , and tell the face thou viewest.
这句话其实是莎士比亚的十四行诗中某一首的开头。
再倒序观察1 3 5 7 9等奇数字符,是Die single, and thine image dies with thee. 的倒序。
(标题——头尾相接!!!)
观察出乱序的规律之后我们即可写脚本还原这首诗
LOOK in thy glass, and tell the face thou viewest Now is the time that face should form another, Whose fresh repair if now thou renewest, Thou dost beguile the world, unbless some mother. For where is she so fair whose uneared womb Disdains the tillage of thy husbandry? Or who is he so fond will be the tomb flag{bad_hacker}, Of his self-love, to stop posterity? Thou art thy mother's glass, and she in thee Calls back the lovely April of her prime; So thou through windows of thine age shalt see, Despite of wrinkles, this thy golden time. But if thou live rememb'red not to be, Die single, and thine image dies with thee.
即可拿到flag
考点:前缀和,hash字符串
原文地址:https://www.cnblogs.com/Never-Land/p/12577147.html
- 数据库连接池、dbutil_知识点全掌握
- Golang 序列化之 ProtoBuf
- Golang RPC 之 gRPC
- 解决连通性问题的四种算法
- 使用shell批量生成数据整合式迁移的脚本(r8笔记第52天)
- Jdbc知识点全整理,你值得拥有 (1)
- SSD: Single Shot MultiBox Detector 深度学习笔记之SSD物体检测模型
- dg broker校验失败的一个奇怪问题(r8笔记第50天)
- golang 几种字符串的连接方式
- 整理ING
- dg broker校验失败的一个奇怪问题(二) (r8笔记第51天)
- Jdbc知识点全整理,你值得拥有 (2)
- 抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析
- Python 用OPEN读文件报错 ,路径以及r
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode42-区间合并】区间列表的交集
- 【python-leetcode202-快慢指针】快乐数
- vuejs之结合使用vue+element-ui搭建后台管理页面
- 【python-leetcode142-快慢指针】环形链表2
- 【python-leetcode141-快慢指针】环形链表
- python-快速排序
- 【python-leetcode75-双指针】颜色分类
- 【python-leetcode713-双指针】乘积小于k的子数组
- vuejs之构建简易音乐播放器
- vuejs小例子之天气查询
- 【python-leetcode259-双指针】三个数的最小和
- vuejs之vue.js+axios结合使用
- c语言之指向指针的指针
- c语言之利用#if #endif来进行注释或者运行不同的主函数
- c++之对组pair