实训day4

实训6 CTF之MISC(安全杂项)

实训目的

了解CTF竞赛的规则及流程。

了解MISC的相关概念和所含范畴。

掌握流量分析的基本方法。

掌握图片隐写的基本方法。

掌握压缩包分析的基本方法。

实训准备及注意事项

1.硬件:装有Windows操作系统的计算机1台。

2.软件:winhex19、Stegsolve、ntfsstreamseditor、010_Editor、Advanced-Archive-Password-Recovery、wireshark、binwalk-master、F5-steganography。   

3.严格按照实验步骤进行实验,实验结果以截图的形式进行保留。

实训背景知识

CTF

全称Capture The Flag,是一种网络安全技术人员之间进行技术竞技的一种比赛形式。这种竞赛形式起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。CTF竞赛已经成为网络安全领域重要的技术交流和竞技平台。

CTF竞赛的形式多种多样,包括解题模式、攻防模式、混合模式等。在解题模式(Jeopardy)中,参赛队伍需要通过分析各种网络安全问题,寻找并解决其中的安全漏洞,以获得分数。这些问题可能涉及漏洞利用、密码分析、逆向工程等多个方面。攻防模式(Attack-Defense)则更侧重于实际网络环境的攻防对抗,参赛队伍需要在保护自身系统安全的同时,尝试攻击其他队伍的系统。混合模式则是将解题模式和攻防模式结合起来,既有解题挑战,也有实际的攻防对抗。

CTF竞赛的意义在于提供一个安全、可控的环境,让网络安全技术人员能够展示他们的技能,学习新的知识和技术,并与其他同行进行交流和合作。通过参与CTF竞赛,技术人员可以提升自己的实战能力,增强对网络安全威胁的应对能力。同时,CTF竞赛也是选拔和培养网络安全人才的重要途径,优秀的参赛者往往能够脱颖而出,成为网络安全领域的佼佼者。

MISC

在CTF(Capture The Flag)竞赛中,MISC(Miscellaneous)是一个重要的分类,涵盖了各种非传统、跨学科的网络安全挑战。MISC题目通常要求参赛者运用广泛的知识和技能,包括但不限于文件分析、隐写术、数字取证、编码解码、密码学、社会工程学等,来解决各种复杂的问题。

MISC培训的目的在于帮助参赛者提升在这些领域的技能和知识,以便更好地应对CTF竞赛中的MISC挑战。通过培训,参赛者可以学习如何识别和分析不同类型的文件,掌握隐写术的基本原理和技巧,了解数字取证的基本流程和方法,以及熟悉各种编码解码技术和密码学原理。

MISC培训的意义在于培养参赛者的综合素质和问题解决能力。由于MISC题目通常涉及多个领域的知识和技能,因此参赛者需要具备跨学科的思考和学习能力。通过培训和实践,参赛者可以逐渐提升自己在这些领域的能力,并培养出对未知问题的敏锐洞察力和解决问题的能力。

Writeup

CTF的Writeup是指对参赛者在CTF夺旗赛中解题过程的详细记录和解释。这通常是一个题目的解答报告,包括解题思路、方法、技术运用以及最终结果的说明。Writeup的目的是为了帮助其他人学习和理解解题思路,从而提升他们的网络安全技能。

一个标准的CTF Writeup通常包含以下内容:

题目描述:写明题目的名称、分类、得分和难度等信息,这有助于读者对题目有一个初步的了解。

题目分析:对题目进行深入的分析,包括理解题目的要求、查找相关的资料、分析题目所涉及的技术或概念等。

解题过程:详细描述解题的步骤、方法和过程截图,包括使用的工具、技术、遇到的挑战以及如何解决这些挑战等。

结果展示:展示解题的最终结果,包括得到的flag(标志)、分数或其他形式的验证。

总结与反思:对整个解题过程进行总结,分享解题的经验教训,以及可能的改进方向。

通过Writeup,参赛者不仅可以展示自己的解题能力,还可以与他人分享学习成果,促进网络安全社区的交流与发展。同时,对于其他参赛者或学习者来说,阅读Writeup可以帮助他们更快地掌握解题技巧和方法,提高自己的网络安全技能水平。

实训任务1 FTPASS

题目要求:密码在哪里?

提示1:巧用追踪流

提示2:找到FTP密码即可

过滤ftp项,追踪流得到密码

实训任务2 数据包中的线索

公安机关近期截获到某网络犯罪团伙在线交流的数据包,但无法分析出具体的交流内容,聪明的你能帮公安机关找到线索吗?

提示1:追踪与获取文件有关的HTTP报文

提示2:文件内容的编码

提示3:转码网站:the-x.cn

提示4:结果为flag{}

过滤http项,查看get请求中的数据,发现内容被加密了

Base64解密得到图片

另存为图片,发现flag在图片正上方

实训任务3 被嗅探的流量

某黑客潜入到某公司内网通过嗅探抓取了一段文件传输的数据,该数据也被该公司截获,你能帮该公司分析他抓取的到底是什么文件的数据吗?

提示1:HTTP流量

提示2:追踪上传文件相关的痕迹(POST请求)找到flag

提示3:结果为flag{}

过滤http项,其中有两项为POST请求,追踪http流得到flag

实训任务4 大白

看不到图? 是不是屏幕太小了。

提示1:图显示不全

提示2:如何修改图片大小显示出隐藏的部分?(winhex软件)

提示3:结果为flag{}

打开图片发现图片显示不全,用HXD修改图片高度,得到大白身上的flag

实训任务5秘密藏在了哪里?

RT。

提示1:压缩包注释信息是真正的压缩包(但数据有损坏)

提示2:如何根据压缩文件的头尾特征修复损坏的数据?(Hxd软件)

提示3:保存为文件后解压。

打开文件解压界面,看到右侧下方的一长串16进制数,复制一下

将复制的内容覆盖原内容,打开zip文件看见里面内容为tureflag.txt

了解zip隐写后可以发现其标记位均为01,更改后打开文件得到flag

实训任务6小明的保险箱

小明有一个保险箱,里面珍藏了小明的日记本,他记录了什么秘密呢?告诉你,其实保险箱的密码是小明的银行密码。

提示1:winhex打开,查看图片中是否包含zip、rar(通过文件头判断)等文件?

提示2:修改图片后缀得到加密压缩包

提示3:密码是小明的银行卡密码(有什么特征?),压缩包密码爆破(AAPR工具)。

用HXD工具查看该图片前缀为PK,标准的zip文件

修改图片后缀得到压缩包,发现被加密了

使用AARP工具暴力破解

解压后成功得到flag

实训任务7 刷新过的图片

RT。

提示1:图片 F5 隐写解密(https://github.com/matthewgao/F5-steganography)

提示2:zip 伪加密,如何修复被改动的数据?(010 editor工具)

提示3:结果为flag{}

先获取F5隐写解密工具,使用脚本后得到输出

查看output.txt得到以下内容

将后缀改为.zip解压,提示文件存在加密

使用winhex更改全局标记位

得到flag

Biubiu

观察图片属性无备注,用HXD打开得到flag

让暴风雨猛烈些吧

HXD打开未发现flag

尝试暴力破解

解压打开文件,内容使用base64加密,解密后得到flag

So easy

确实easy,HXD打开发现内容中包含flag

被窃取的文件

过滤tcp项

对request请求进行追踪,发现内容为压缩包文件

保留其数据并尝试解压

解压失败尝试暴力破解,得到flag

  • 43
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的C语言万年历的实训报告,供您参考: 一、实训目的 本次实训的主要目的是通过编写一个简单的C语言万年历程序,巩固C语言基本语法和编程思想,提高编程能力和解决问题的能力。 二、实训要求 1、能够使用C语言基本语法和控制语句编写程序。 2、能够使用数组来存储和操作数据。 3、能够使用函数来实现模块化编程。 4、能够使用指针来操作内存中的数据。 5、能够使用文件来读取和写入数据。 三、实训内容 1、程序功能 本程序实现了一个简单的万年历功能,可以通过输入年份和月份来显示该月的日历。 2、程序实现 以下是本程序的主要代码实现: ```c #include <stdio.h> // 判断是否为闰年 int is_leap_year(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { return 1; } else { return 0; } } // 获取某个月份的总天数 int get_days(int year, int month) { int days[] = {31, 28 + is_leap_year(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; return days[month - 1]; } // 获取某个日期是星期几 int get_weekday(int year, int month, int day) { if (month == 1 || month == 2) { year--; month += 12; } int c = year / 100; int y = year % 100; int w = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1; w = (w % 7 + 7) % 7; return w; } // 显示日历 void show_calendar(int year, int month) { int days = get_days(year, month); int weekday = get_weekday(year, month, 1); printf(" 日 一 二 三 四 五 六\n"); int i; for (i = 0; i < weekday; i++) { printf(" "); } for (i = 1; i <= days; i++) { printf("%2d ", i); if ((weekday + i) % 7 == 0) { printf("\n"); } } if ((weekday + days) % 7 != 0) { printf("\n"); } } int main() { int year, month; printf("请输入年份:"); scanf("%d", &year); printf("请输入月份:"); scanf("%d", &month); if (month < 1 || month > 12) { printf("月份输入错误!\n"); return 1; } printf(" %d年%d月\n", year, month); show_calendar(year, month); return 0; } ``` 四、实训总结 通过本次实训,我学会了如何使用C语言来编写一个简单的万年历程序,巩固了C语言基本语法和编程思想,加强了对函数、数组、指针、文件等概念和用法的理解,提高了编程能力和解决问题的能力。同时,我也意识到在编程过程中需要注重代码的规范、可读性和可维护性,这对于日后的开发工作非常重要。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值