比赛链接

crypto

BabyRSA

小Z学习了RSA算法,但他认为n只需要够大就行了,这合理吗?

from Crypto.Util.number import *
from secret import flagn=2**1024
e=65537
m=bytes_to_long(flag)
c=pow(m,e,n)
print(c)
#98710114935284696266727187099974304915197330259272688276752009544494890794011845947207535135621221728554983292075279363326530470887005280108304064858795643910517493912505786063549355563638508775960293670872216617616553808345157867436238066114955363541580189011576137409639942086089783269849382676031779988861

思路

∵c≡m65537(mod21024)\because c\equiv m^{65537}\pmod{2^{1024}}∵c≡m65537(mod21024)
∴m≡c21024−165537(mod21024)\therefore m\equiv c^\frac{2^{1024}-1}{65537}\pmod {2^{1024}}∴m≡c6553721024−1​(mod21024)
因此,我们通过 ccc 逆向算出 mmm ,再用 long_to_bytes 转为 flag 即可

BabyHash

听说哈希算法是不可逆的,我用它来封印我的小秘密,嘻嘻(#.#)

import hashlib
from secret import flagfor c in flag:print(hashlib.sha256(c.encode()).hexdigest())'''
f67ab10ad4e4c53121b6a5fe4da9c10ddee905b978d3788d2723d7bfacbe28a9
3f39d5c348e5b79d06e842c114e6cc571583bbf44e4b0ebfda1a01ec05745d43
a25513c7e0f6eaa80a3337ee18081b9e2ed09e00af8531c8f7bb2542764027e7
6b23c0d5f35d1b11f9b683f0b0a617355deb11277d91ae091d399c655b87940d
e632b7095b0bf32c260fa4c539e9fd7b852d0de454e9be26f24d0d6f91d069d3
f67ab10ad4e4c53121b6a5fe4da9c10ddee905b978d3788d2723d7bfacbe28a9
021fb596db81e6d02bf3d2586ee3981fe519f275c0ac9ca76bbcf2ebb4097d96
df7e70e5021544f4834bbee64a9e3789febc4be81470df629cad6ddb03320a5c
454349e422f05297191ead13e21d3db520e5abef52055e4964b82fb213f593a1
0bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad6
e3b98a4da31a127d4bde6e43033f66ba274cab0eb7eb1c70ec41402bf6273dd8
3f79bb7b435b05321651daefd374cdc681dc06faa65e374e38337b88ca046dea
d2e2adf7177b7a8afddbc12d1634cf23ea1a71020f6a1308070a16400fb68fde
f67ab10ad4e4c53121b6a5fe4da9c10ddee905b978d3788d2723d7bfacbe28a9
65c74c15a686187bb6bbf9958f494fc6b80068034a659a9ad44991b08c58f2d2
454349e422f05297191ead13e21d3db520e5abef52055e4964b82fb213f593a1
2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6
3f79bb7b435b05321651daefd374cdc681dc06faa65e374e38337b88ca046dea
d2e2adf7177b7a8afddbc12d1634cf23ea1a71020f6a1308070a16400fb68fde
6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d
d2e2adf7177b7a8afddbc12d1634cf23ea1a71020f6a1308070a16400fb68fde
a25513c7e0f6eaa80a3337ee18081b9e2ed09e00af8531c8f7bb2542764027e7
043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89
3f79bb7b435b05321651daefd374cdc681dc06faa65e374e38337b88ca046dea
252f10c83610ebca1a059c0bae8255eba2f95be4d1d7bcfa89d7248a82d9f111
0bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad6
acac86c0e609ca906f632b0e2dacccb2b77d22b0621f20ebece1a4835b93f6f0
d10b36aa74a59bcf4a88185837f658afaf3646eff2bb16c3928d0e9335e945d2
'''

思路

把各字母、数字以及下划线带入 ccc ,将它们的输出和题面的输出进行对比,即可得到答案。

EasyXOR

小Z发明了一种基于异或的循环加密,但这可怎么解密呢?

from secret import flagdef encode(msg):msg=list(msg)l=len(msg)enc=[]for i in range(l):enc.append(msg[i%l]^msg[(i+1)%l])enc=bytes(enc)return encfor i in range(5):flag=encode(flag)
print(flag.hex())
#102c2728527c1a356657111350542515634b240e041f2c

可以发现,输出的第 iii 个字节其实是 flag[i]^flag[(i+5)%l]
再根据 flag 前 6 个字符是 FDUCTF ,可以倒推出答案。

BabyRandom

给你一个机会,你能猜出我的心吗? nc 10.12.5.172 2333

#!/usr/bin/env python3
import signal
import random
from secret import flagclass lfsr():def __init__(self, init, mask, length):self.init = initself.mask = maskself.lengthmask = 2**(length+1)-1def next(self):nextdata = (self.init << 1) & self.lengthmask i = self.init & self.mask & self.lengthmask output = 0while i != 0:output ^= (i & 1)i = i >> 1nextdata ^= outputself.init = nextdatareturn outputsignal.alarm(30)
N=16
init=random.randint(1,2**N-1)
mask=random.randint(1,2**N-1)
l=lfsr(init,mask,N)
for i in range(3):op=input('choice:')if op=='1':init=input('init:')try:init=int(init,2)except:exit('Must be a binary number!')mask=random.randint(1,2**N-1)l=lfsr(init,mask,N)elif op=='2':for _ in range(N):print(l.next(),end='')print()elif op=='3':output=input('output:')for _ in range(N):try:assert int(output[i])==l.next()except:exit('Guess error!')print(flag)exit(0)else:exit('Unknown choice!')

思路

代码意思是根据输入的种子生成一个16位的数,每次左移1位(最左边被顶掉)并在右侧附上 mask 下的 popcount。
可以发现种子设为0,猜全0就行了。

misc

photo

图片之下隐藏了什么?
给了一个图片文件,长这样:

思路

输入命令

hexdump -C photodata.jpg > 1.txt

1.txt 里查找 FDUCTF 就能看到密码。

Key2

给了一个压缩包

思路

我直接用7-zip解压就看到flag了

实验报告

WZQ的安全攻防综合实验 实验报告
给了一个 doc 文件

思路

把那个文件解压,然后也找到 flag 了

binary

login

WZQ发现登不上去以前注册过的网站了,但是他成功的偷走了服务器上的验证登录页面,你能帮他找找用户名和密码吗(hint:服务器管理员最喜欢的一句话是:三点多了,饮TEA先啊^^) nc 10.12.5.172 1118
给了一个叫 login 的可执行文件

思路

拖到 IDA 里查看逻辑,然后自己用 C++ 算出交互需要的答案就行了

web

爬图小助手v1

http://10.12.5.172:8088/

wsx很喜欢在网上收集好看的图片,但每次保存图片都要右键,然后保存图片,还要在选择保存路径,巴拉巴拉,感觉就很麻烦,于是wsx写了一个爬图小助手,只要把图片的网址输入进去,就可以把图片保存下来了!这真实一个伟大的发明!但突然有一天,wsx发现好像有黑客利用了他的爬虫小助手? (你需要访问/flag获得flag)

思路

我先用浏览器在校园网内访问 http://10.12.5.172:8088/flag/ ,提示要由本地访问。然后上网查了一下,发现要用 HackBar 插件,访问之后就看到 flag 了。

总结

感觉 CTF 还是挺有趣的,特别是找到 flag 后成就感还是挺强的。
很多题目应该都有一定的套路,我毕竟没学过太多相关知识,有些题目只能上网乱查,各种方法乱试。毕竟 flag 怎么藏还是和出题人本身有关,主观性还是比较强的。
另外前排的大佬真的太强了。我这种打酱油的还是望尘莫及。
不知道写这个报告有啥用,写了会有奖品吗?算了,写都写了,开心就好吧。

2021 FDUCTF解题报告相关推荐

  1. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  2. 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案

    2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...

  3. NJU 2021 计算机拔尖(数学)测试 解题报告

    NJU 2021 计算机拔尖(数学)测试 解题报告 试题链接, 万分感谢 Fiddie 大佬提供试题!!! 因为要准备 2022 计算机拔尖所以稍微写了一下,感觉难度很大. 1 题目 设自然数 n&g ...

  4. 湖南师范大学2021年4月1日愚人赛解题报告与标程

    湖南师范大学2021年4月1日愚人赛解题报告与标程 A 题目描述 标程 B 题目描述 标程 C 题目描述 标程 D 题目描述 解法 标程 E 题目描述 解法 F 题目描述 解法 标程 G 题目描述 标 ...

  5. 2021字节跳动校招秋招算法面试真题解题报告--leetcode148 排序链表,内含7种语言答案

    148.排序链表 1.题目描述 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序 2.解题报告 针对nlogn的排序算法,主要有快速排序,归并排序和堆排序.其中,堆排序利用了数 ...

  6. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  7. Codeforces Round #697 (Div. 3)A~G解题报告

    Codeforces Round #697 (Div. 3)A~G解题报告 题 A Odd Divisor 题目介绍 解题思路 乍一想本题,感觉有点迷迷糊糊,但是证难则反,直接考虑没有奇数因子的情况, ...

  8. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  9. 清北2021毕业生就业报告出炉!清华博士0人出国,70%进体制

      视学算法报道   编辑:桃子 好困 [新智元导读]What? 2021届清华毕业生,70%进入了体制内.不仅清华博士无人再深造,还一起纷纷去当了老师.就连北大博士毕业首选也是教育行业.近日,清北发 ...

最新文章

  1. 一文详解LOAM-SLAM原理深度解析
  2. 服务器搭建tomcat,通过url访问视频
  3. MVC与MVVM框架
  4. Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入
  5. linux下缓存命中测试,linux为什么报表缓存缓存未命中?_linux_开发99编程知识库...
  6. IconFont的制作使用
  7. 【渝粤题库】陕西师范大学210023 学前儿童社会教育 作业(专升本)
  8. 顺丰快递单号的规律_顺丰快递顺丰快递查询单号查询
  9. 将本地项目上传到Github的两种方式 1.在线上传 2.使用Git客户端上传
  10. java学习-BeanUtils给对象的属性赋值
  11. python安装方法mac_在Mac上删除自己安装的Python方法
  12. 苹果抛弃英特尔!TCL 怼格力 500 亿不够做芯片;高德地图上线叫车 | CSDN 极客头条...
  13. 关于 GraphQL 快速入门
  14. JavaScript Math.random()随机数函数
  15. Convert your single instance to 10g RAC by manual
  16. mongodb 高可用分布式原理 ---------搭建高可用mongo集群前需要温习的知识-火
  17. paip.c++ gui 库HtmLayout 的优缺点 QT优点
  18. 关于后台模块的理解。
  19. 使用python创建学员管理系统
  20. python总结大纲:适合初学者与有经验的人快速查找遗忘的知识点

热门文章

  1. 内存中有两个4字节以压缩的bcd_高中对口计算机微机原理04第一二章测验
  2. 北斗授时装置(定时服务)京准为您来解读
  3. SAP IRPA ---LoginSAP的更简单方式
  4. 如何找到自己的python位置_安装 - 如何找到Python site-packages目录的位置?
  5. 关于保险,我把近期的研究成果都免费和盘托出
  6. 【历史上的今天】10 月 19 日:触摸屏概念萌芽;CASE 之父出生;Ask.com 诞生
  7. [pytorch]计算图:对神经网络的图式描述:自动求导的数学基础
  8. 修补居民身份证15-->18
  9. 如何快速清理c盘缓存垃圾(最简单的c盘清理方法)
  10. uniapp华为手机真机测试保姆教程