写在前面:

嘎嘎,又是被比赛虐的一天(连续虐了三天呜呜呜,安恒月赛等等在写嘎嘎)

部分wp,剩下的一题目前还不会,这次可能会标未完待续嘎嘎

crypto

0x01小学生的密码学

嘎,看到题目描述

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

果然是我们小学二年级就能一眼看出的仿射密码呢(才不是嘞,要不是我之前见过,我可能就在这题挂掉了)

话不多说,直接上脚本(小声bb:我感jio看看加密原理可以手撕~)

def affine(a,b):pwd = {}for i in range(26):pwd_dic[chr(((a*i+b)%26+97))] = chr(i+97)return pwd_dicif __name__ == '__main__':pwd_dic = {}pwd = 'welcylk'pwd = pwd.lower()plain = []pwd_dic = affine(11,+6)for i in pwd:plain.append(pwd_dic[i])print ("Flag is :" + "".join(plain))

所以结果是 sorcery 啦
然后base64加密

flag{c29yY2VyeQ==}

over

0x02汉字的秘密

所以暂时将你眼睛闭了起来~

(不知道为什么写wp一直重复这句歌词)

扯回正题啊喂,以上与本题无关嘎嘎

得到题目是几个汉字,如下:

王壮 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由 土夫 井中 士夫 王工 王人 土由 由口夫

啊~回想见过的密码与汉字有关的就是当铺加密啦

他的精髓就是汉字笔画的出头数,所以什么汉字都无所谓啦(画个重点嘎)

根据本题所给的汉字,我们得到如下数字串

69 74 62 67 118 83 72 77 86 55 71 57 82 57 64 63 51 107

看着是不是很像ASCII嘎嘎?

嘿嘿,它当然是ASCII码啦

EJ>CvSHMV7G9R9@?3k

但是是不是找出来什么规律?

别急,我们仔细观察

你看前四个数字是不是跟flag的ASCII码有关系!!

经过我们仔细思考,得到如下规律

i=i+1,原来的ASCII+他所在的位置就是他代表的真实的字母啦

(说白了就是变异凯撒)

(真的好不专业啊喂)

flag{you_are_good}

bingo(^_-)

0x03babycrypto

嘎嘎,本题是在chrisyy师傅的指导下做出来的~在此膜一下密码学爷爷

(脚本也是来自chrisyy师傅哒)(附上密码学爷爷的博客嘎嘎http://blog.chrisyy.top/)

题目如下,感受一下绝望

这个n根本就分解不出来,有619位(╭(╯^╰)╮)

# n:0xb119849bc4523e49c6c038a509a74cda628d4ca0e4d0f28e677d57f3c3c7d0d876ef07d7581fe05a060546fedd7d061d3bc70d679b6c5dd9bc66c5bdad8f2ef898b1e785496c4989daf716a1c89d5c174da494eee7061bcb6d52cafa337fc2a7bba42c918bbd3104dff62ecc9d3704a455a6ce282de0d8129e26c840734ffd302bec5f0a66e0e6d00b5c50fa57c546cff9d7e6a978db77997082b4cb927df9847dfffef55138cb946c62c9f09b968033745b5b6868338c64819a8e92a827265f9abd409359a9471d8c3a2631b80e5b462ba42336717700998ff38536c2436e24ac19228cd2d7a909ead1a8494ff6c3a7151e888e115b68cc6a7a8c6cf8a6c005L
# e:65537
# enc:1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361
# p>>128<<128:0xe4e4b390c1d201dae2c00a4669c0865cc5767bc444f5d310f3cfc75872d96feb89e556972c99ae20753e3314240a52df5dccd076a47c6b5d11b531b92d901b2b512aeb0b263bbfd624fe3d52e5e238beeb581ebe012b2f176a4ffd1e0d2aa8c4d3a2656573b727d4d3136513a931428b00000000000000000000000000000000Lnhenda

首先看到n很大,那么这道题肯定就不是通过分解n来做题
再看p是给了部分高位p(这个一定不是最终的p,因为他不是质数,为什么不是质数,因为转成十进制可以整除5嘎嘎)

所以这道题是用Coppersmith定理来做题嘎嘎

那么~接下来进入做题时间

脚本如下,能看懂的师傅可以多看两眼,看不懂的师傅(比如我,知道如何把数带进去就好嘎嘎)跳过代码看下面

from Crypto.Util.number import *
n = 0xb119849bc4523e49c6c038a509a74cda628d4ca0e4d0f28e677d57f3c3c7d0d876ef07d7581fe05a060546fedd7d061d3bc70d679b6c5dd9bc66c5bdad8f2ef898b1e785496c4989daf716a1c89d5c174da494eee7061bcb6d52cafa337fc2a7bba42c918bbd3104dff62ecc9d3704a455a6ce282de0d8129e26c840734ffd302bec5f0a66e0e6d00b5c50fa57c546cff9d7e6a978db77997082b4cb927df9847dfffef55138cb946c62c9f09b968033745b5b6868338c64819a8e92a827265f9abd409359a9471d8c3a2631b80e5b462ba42336717700998ff38536c2436e24ac19228cd2d7a909ead1a8494ff6c3a7151e888e115b68cc6a7a8c6cf8a6c005L
e = 65537
c = 1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361
high_p = 0xe4e4b390c1d201dae2c00a4669c0865cc5767bc444f5d310f3cfc75872d96feb89e556972c99ae20753e3314240a52df5dccd076a47c6b5d11b531b92d901b2b512aeb0b263bbfd624fe3d52e5e238beeb581ebe012b2f176a4ffd1e0d2aa8c4d3a2656573b727d4d3136513a931428b00000000000000000000000000000000LR.<x> = PolynomialRing(Zmod(n), implementation='NTL')
p = high_p + x
x0 = p.small_roots(X = 2^128, beta = 0.1)[0]P = int(p(x0))
Q = n // Passert n == P*Q
d = inverse_mod(65537, (P-1)*(Q-1))
print(long_to_bytes(power_mod(c, d, n)))

重点来咯!!!这个脚本要在sage下运行
下载sage(大概七百八M)解压安装,

双击notebook(这个得在跑脚本的时候一直开着)

会自动跳出来一个home的网页,

在右上角新建sage,将脚本直接贴进去,运行就好啦(如果你还没有看懂的话,欢迎私聊嘎嘎)

所以最后flag是

flag{3d0914a1-1e97-4822-a745-c7e20c5179b9}

over嘎嘎

Misc

0x01签到题

打开链接即可得到flag

开胃菜,没啥好写的,忘记截图了(主要是每次都是习惯赛后写wp,老是忘记记录解题步骤

大概flag就是flag{xxx_xxx_xxx}

嘎(皮一下很开心)

0x02Pokeman

精灵宝可梦,来一段回忆杀吧

拿到题目是份游戏说明和一个gba文件,啊,百度一下gba,发现是任天堂公司的游戏

(这里根据题目提示也可知是精灵宝可梦这款游戏)

打开的话需要用到模拟器——VisualBoyAdvance(1.8CN)

https://dl.3dmgame.com/patch/147353.html(模拟器下载地址)

然后载入文件,一直向下就好 嘎嘎,疯狂按Z,

去到野外去到103道路即可成功get到flag(题目描述啦)

最后flag是flag{PokEmon_14_CutE}

嘎over

0x03 Harley Quinn

啊,题目给了一段音频和一张图片

做题后期还给了两个hint

hint1:电话音&九宫格

hint2:FreeFileCamouflage,下载的文件可能显示乱码

我拿到题目的思路是先看了看图片,发现最后有一段类似base64编码的东西存在,但是解码发现并不是那么简单。在其他方面并没有找到有价值的线索,于是我们继而分析音频

音频的话就简单直接了当多了,前面没什么特别,听到最后发现有dtmf音

看了看就几个,然后题目提示说工具提取dtmf音可能会有乱码,所以这里我是用的手工提取嘎嘎

手工提取方法请看第一篇博客——MRCTF的misc第三题寻找xxx 嘎

手工分析的结果是

#222833344477773338866#

这时我们看第一条hint,电话拨号+九宫格,

九宫格就很明显的拼音九键啦

即 ctfisfun

这时我们并没有获得需要下一步的线索,这里我们合理猜测是个密钥嘎嘎

但是我们目前还没有获得一个需要密钥的文件,而且图片我们还没有用到

这个时候第二个hint放出来了,是一个工具FreeFileCamouflage

题目也有提示说解密版本是1.25,

于是我们去百度这个工具的1.25版本,下载,启动

加载图片试一试,发现需要密钥,正好我们之前刚刚得到新鲜出炉的密钥

正正好产生了一个名为flag.txt的文件嘎

开心心,成功得到flag

flag{Pudd1n!!_y0u_F1nd_m3!}

0x04code obfuscation

咔咔咔,重点来喽

下载附件得到一个被人玩坏了的二维码

看到这个亚子不要慌,打开我们的神器——PS,直接暴力修图CfjxaPF

(因为扫码的时候是有纠错哒,所以粗糙一点也没什么)

(害,成大事者就要不拘小节嘎)

下面我们说一说PS修图方法(从不p图的手残人士在线教人——你,敢学吗?)

沙雕完了来说正事

先用截图(专业点就是裁剪工具)中的不规则截图(专业点来说叫透视裁剪工具)给他盘成大差不离的正方形,然后掏出我们的画笔工具,把他该是黑色的全都给他涂成黑色

嘎,我真是个鬼才

扫码得到base(gkctf)

提交发现并不是真的flag,所以这道题还没有结束

遇事不决就看binwalk嘎

扔Kali里分离一下

(这里我试的时候foremost并不会出来压缩包,但是binwalk -e可以)

(binwalk -e 命令在我的2019版本的Kali也不会出来文件夹,在Kali2020版本才可以)

或者像我一样懒得开虚拟机,放010里发现图片最后有个rar压缩包,

(那么这里插播一个小白问题,如何发现图片最后有压缩包?我们都知道png图片文件十六进制开头是89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52(大概就是PNG.........IHDR)结尾是49 45 4E 44 AE 42 60 82(大概是IEND)那么多出的部分就是不属于原图片文件中的部分,不属于图片文件那是什么文件呢?rar文件开头是52 61 72 21(开头是Rar样式)
所以判断图片后面还有一个压缩包文件。
over)

我们直接新建十六进制文件,将图片多余部分复制粘贴到新的十六进制文件里,另存为rar文件就OK啦

双击打开发现有密码,想到之前扫码得到的结果,输入并不对,看到base想到应该是吧gkctf加密后填入的吧

然后就在base家族里尝试

(附:base家族:16,32,58,64,85,91)

(欢迎各位路过大佬补充base家族成员嘎)

在尝试了平常常用的base16,32,64无果后,开始尝试base58,加密后密码为CfjxaPF

发现果真是压缩包密码。

(小声bb,我感觉这个密码也可以爆出来哦,如果实在修不了二维码的话

但是可惜的是我没有成功(/头秃.jpg)可能是工具的问题吧)

解压压缩包后得到一个1文件和一个flag3.jpg的图片

(说实话到这一步我以为有四层加密呢,害)

图片内容是一串串奇奇怪怪的文字

分析图片也没有得到什么结果,嗯,那我们看一看另一个文件

用sublime打开后发现是js混淆(别问,问就是经验)

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('15 n 14 a b c d e f g h i j k l m n o p q r s t u v w x y z 10 11 17="n"12 15 n 14 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 10 11 17="n"12 13=0 15 n 14 a b c d e f g h i j 10 11 16="n"13=$((13+1))12 1g("1f=\' \';1e=\'"\';16=\'#\';1j=\'(\';1i=\')\';1h=\'.\';1a=\';\';19=\'<\';18=\'>\';1d=\'1c\';1b=\'{\';1k=\'}\';1t=\'0\';1u=\'1\';1s=\'2\';1r=\'3\';1n=\'4\';1m=\'5\';1l=\'6\';1q=\'7\';1p=\'8\';1o=\'9\';")',62,93,'||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||do|eval|done|num|in|for|Bn|An|Ce|Cc|Cb|Cn|_|Cl|Bm|Bk|alert|By|Bt|Bs|Cp|Dg|Df|De|Dj|Di|Dh|Dd|Dc|Da|Db'.split('|'),0,{}))

用在线网站反混淆一下下
(这里提供一个在线网站https://www.jisuan.mobi/p6Hm3bB1Bbm66xiS.html

实话说,感觉还挺好用)

for n in a b c d e f g h i j k l m n o p q r s t u v w x y z do eval An = "n"
done
for n in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z do eval An = "n"
done
num = 0
for n in a b c d e f g h i j do eval Bn = "n"
num =
$((num + 1)) done alert("Bk=' ';Bm='"';Bn='#';Bs=' (';Bt=')';By='.';Cb=';';Cc=' < ';Ce=' > ';Cl='_ ';Cn=' {';Cp='}';Da='0 ';Db='1 ';Dc='2 ';Dd='3 ';De='4 ';Df='5 ';Dg='6 ';Dh='7 ';Di='8 ';Dj='9 ';")

分析代码得上面一串串代码意思就是Bk=空格,Cb=;,Da=0,Aa=a这个样子
所以对照上面代码将图片代表内容写出来就好啦

#include <stdio.h>
int main(){
print('w3lc0me_4o_9kct5');
return 0;
}

所以最后flag就是
flag{w3lc0me_4o_9kct5}

over嘎

0x05Sail a boat down the river

这个目前还没复盘,先鸽这

嘿嘿,未完待续。。。。

GKCTF(MISCCRYPTO部分)(未完待续。。)相关推荐

  1. 《今日简史》读书笔记(未完待续)

    <今日简史>读书笔记(未完待续) 这本书是尤瓦尔·赫拉利的简史三部曲的最后一本,前2本书是<未来简史>和<人类简史>.根据豆瓣上网友的评价,这本书是尤瓦尔·赫拉利写 ...

  2. linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要

    Linux 命令个人总结====== 未完待续 man [功能说明]: 查看帮助 [语法格式]: man [123456789]命令.文件. [选项参数]: 数字"1"表示用户命令 ...

  3. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)

    目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...

  4. Paper之BigGAN:ICLR 2019最新论文《LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(未完待续)

    Paper之BigGAN:ICLR 2019最新论文<LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS> ...

  5. Windows x64内核学习笔记(五)—— KPTI(未完待续)

    Windows x64内核学习笔记(五)-- KPTI(未完待续) KPTI 实验一:构造IDT后门并读取Cr3 参考资料 KPTI 描述:KPTI(Kernel page-table isolati ...

  6. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  7. Ubuntu1804和2004高版本,右键无法创建TXT文档的解决办法【未完待续】

    Ubuntu1804和2004高版本,右键无法创建TXT文档的解决办法[未完待续] 问题: Ubuntu1804和2004高版本,右键无法创建TXT文档 解决办法1:[常用] 1.打开终端 2.输入: ...

  8. 《图解 HTTP》读书笔记(未完待续)

    ARP 协议(Address Resolution Protocol)一种以解析地址的协议,根据通信双方的 IP 地址就可以查出对应的 MAC 地址. MAC( Media Access Contro ...

  9. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

    1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...

最新文章

  1. Java开发字符串JSON处理
  2. NYOJ-49 开心的小明
  3. 【完整代码】使用Semaphore实现线程的交替执行打印 A1B2C3D4E5
  4. c++ primer 5th 练习11.38自己编写答案(用无序容器重写单词计数程序)
  5. ue4 gpu构建_待在家里吗 为什么不构建GPU Box!
  6. STM32F1笔记(十三)SPI
  7. linux服务器cc防御,Linux下简单的防止CC攻击
  8. 【人脸识别】arcface详解
  9. 工资计算问题,类似计算某天是一年中的第几天的问题
  10. 机器学习—XGboost的原理、工程实现与优缺点
  11. Java--I/O输入输出流
  12. grub清除linux密码,忘了grub密码和root密码时的root密码更改和grub密码清除方法
  13. gulpfile 编译运行_Gulp基本使用
  14. 软件测试开发高频面试题及参考答案(适用校招)
  15. CI/CD工具链的部署
  16. python数据分析教程百度云资源-【python数据分析+pdf】百度云下载 - 云盘精灵
  17. 共阳极数码管显示0~9_《显示器件应用分析精粹》之(3)数码管静态显示
  18. pdf转换成jpg转换器教程
  19. 【API接口】接口上线下线 用户在线测试,和管理员发布api待完善...
  20. ChatGpt接入Word文档,让你秒变职场达人!

热门文章

  1. Knapsack Cryptosystem
  2. java中m三个等号是什么意思_三个等号是什么意思
  3. 树莓派 | Linux 中怎么查看图片
  4. Ackerman(阿克曼)函数C语言递归实现
  5. 《Unity3D网络游戏实战》第7章
  6. 12点的idft c语言,【整理】用IDFT实现UF-OFDM和OFDM的模拟调制
  7. CAS统一登录认证(6):SSO集成架构
  8. vue中使用海康插件实现视频监控-流不稳定导致视频断开前端解决办法
  9. libreoffice使用_使用LibreOffice作为您的开源预算工具
  10. 03大数据技术之Hadoop(HDFS)