XUJC CTFer的专属学习路线

**⚠︎温馨提示:**本学习路线适合TKK网安宝宝体质,全程可0基础观看。也欢迎想更加了解网络安全竞赛的你们踊跃举手发问🙋,我在评论区等你们😊。 哈喽,相信在看这篇学习路线的你一定是对网络安全,或者说“黑客技术”有着的进一步学习的信心,想进一步了解关于网络安全竞赛的事宜 不论你之前对这方面的掌握有多少,是不是脚本小子,会不会编程语言,数学好不好,甚至有没有计算机基础,都不妨碍你在黑客的领域进一步探索与学习。 本篇学习路线分为两个部分,“简介“和”学习步骤”。如果你想了解特定领域的内容,可以点击目录辅助观看噢 CTF简介 什么是CTF? CTF(Capture The Flag,夺旗赛)CTF 的前身是传统黑客之间的网络技术比拼游戏,起源于 1996 年第四届 DEFCON(世界黑客大会),以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。 CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为**“flag”**🚩。 flag所表示的为目标服务器上存储的一些敏感机密的信息, 这些信息正常情况下是不能对外暴露的。选手利用目标的一些漏洞,获取到flag,其表示的即为在真实的黑客攻击中窃取到的机密信息。 一般情况下flag拥有固定格式为flag{xxxxx},有些比赛会把flag关键词替换,例如我们XUJC Lab平台的flag为xujc{xxxxx},利用固定格式来反推flag也是一种常见的解题思路 👀正常情况下,一场比赛中每支队伍人数为3到5人不定,每个人负责不同方向的题目(详细请往下看)。由于团队成员有各自不同方向的题目分配,因此就不存在一些其他比赛常见的”一人不会,队友带飞“的雷人场面。 🧑‍💻对于一个专业的黑客来说,拥有CTF经验是必不可少的。参加各大CTF赛事能够让你更加灵活地适应各类实战环境。而CTF考验最多的则是对一些从未被发现过的漏洞的挖掘,是最真实的黑客攻击过程。 CTF比赛的内容是什么? 和ACM的单一算法题不同,传统CTF比赛中有分为多种不同方向的题目。一般有web,pwn,reverse,misc和crypto等方向,近些年来又加入了诸如osint,Android,blockchain,AI等新方向。下面就让我们一一介绍 🌏web Web类题目大部分情况下和网络相关技能有关。主要考察选手对于网络攻防的一些知识技巧。诸如SQL注入、信息伪造、远程恶意代码执行、漏洞挖掘等等常见网络攻击手段。一般情况下Web题目会给出一个能够访问的网址,然后要求对其进行攻击。部分题目会给出网站源代码供漏洞挖掘。 实战案例:网站入侵,内网渗透 建议:适合喜欢研究网络有关的成员学习,也适合当作CTF入门方向 🔧pwn pwn这个名字最早也是出于世界黑客大会,从黑客们以攻破设备或者系统后的”boom“发音而来。Pwn类题目重点考察选手对于设备和系统底层逻辑漏洞的挖掘和利用能力,其攻破手段也通常在堆栈溢出、格式化漏洞、UAF、Double Free等常见底层二进制漏洞上。选手需要根据题目中给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(Exploit),进而对主办方给出的远程服务器进行攻击并获取flag 实战案例:iphone越狱,路由器固件破解,操作系统提权 建议:适合对计算机硬件、计算机底层逻辑感兴趣的成员学习,学习门槛较高,对计算机原理功底要求高。不适合作为入门方向学习 🧑‍🔧reverse 顾名思义,reverse的含义是”逆向“。这类题目考察选手对软件的逆向工程能力。题目会给出一个可执行文件。选手需要逆向给出的程序,分析其程序工作原理。最终根据程序行为等提示找到flag 实战案例:游戏破解,游戏外挂编写 建议:适合喜欢研究软件破解、外挂编写的成员学习,对程序执行逻辑的分析能力要求高。 🔑crypto crypto题目考察选手对密码学相关知识的了解程度,诸如RSA、AES、DES等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。 实战案例:程序加密逆向 建议:适合喜欢数学、或数学成绩较好的成员学习。(鉴于难度奇高,不推荐学习) 🤹misc misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag。misc常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。 实战案例:信息隐藏 建议:适合喜欢研究使用各类工具软件(文本处理、图像处理、音频处理)的成员学习,适合作为入门方向学习。 🔎osint osint早期被归纳为misc。其实就是近年来在各大视频网站上火起来的“网络迷踪”,也叫情报分析。题目通过提供一张照片、一段话或是其他任意形式的线索,供选手寻找一些信息(例如某个建筑的名字、某个时间、甚至某个人的名字以及其他敏感信息),并作为flag提交 实战案例:参考柯南😂 建议:适合所有成员学习,可以配合misc作为入门方向,但不适合专攻 📱android android题考验选手对安卓系统的了解程度。通常以APK逆向,安卓系统“Root”等题目为主。 实战案例:安卓系统“Root”,安卓手机软件/游戏破解 建议:参考reverse的建议 🔗blockchain blockchain方向主要以区块链安全为主。题目有诸如虚拟货币钱包破解等。(该方向出现概率较小,因此可参照题目类型也较少。) 实战案例:比特币钱包盗用 建议:建议作为学习完上述某一方向后的拓展方向,不适合专攻 🤖AI 近年来大火的一个赛道,甚至有独立出CTF的AI安全比赛。出现在CTF中的题目将让选手自己制作AI模型,来检测出题者给出的病毒或恶意文件,利用AI分析出的数据拼凑出正确的flag 实战案例:垃圾邮件/短信检测,新型杀毒软件 建议:适合对机器学习感兴趣的成员学习 CTF比赛模式 说了这么多供你选择的方向,接下来就来看看各个方向要在不一样的比赛模式里要怎么大展身手吧🫵 😎值得一提的是,和大部分“闭卷式”的比赛不一样(例如ACM算法竞赛),为了模拟最真实的黑客入侵环境,不论是什么模式的CTF比赛,都是可以自由上网查阅资料的 Jeopardy-解题模式 (最经典🎻) 参赛队伍可以通过互联网或者现场网络线下参与,参数队伍通过与在线环境交互或文件离线分析,解决网络安全技术挑战获取相应分值,类似于 ACM 算法竞赛、信息学奥林匹克赛的根据总分和时间来进行排名。 这个解题模式一般会设置 一血(First Blood) 、 二血(Second Blood) 、 三血(Third Blood) ,也即最先完成的前三支队伍会获得额外分值,所以这不仅是对首先解出题目的队伍的分值鼓励,也是一种团队能力的间接体现。 ...

August 26, 2023 · 1 min · Red

[issue]关于近期发现洛谷判题错误的求证

不知道有没有人遇到和我一样的问题 近日突然想起来洛谷部分题目存在判断失误问题(包括之前遇到过的一些题已经忘记题号),以下面两道题为例,贴出我的得分情况、输出情况和代码(已确认无空格和换行等差异) P1067 我的代码 #include<stdio.h> int main(){ int n,t; scanf("%d",&n); t=n; while(n--){ int a; scanf("%d",&a); if(n!=0){ if(a>0&&(a!=1&&a!=-1)){ if(t==n+1) printf("%dx^%d",a,n+1); else printf("+%dx^%d",a,n+1); }else if(a==-1||a==1){ if(a>0&&t==n+1) printf("x^%d",n+1); else if(a>0&&t!=n+1) printf("+x^%d",n+1); else printf("-x^%d",n+1); }else if(a<0&&(a!=1&&a!=-1)){ printf("%dx^%d",a,n+1); }else{ t--; } } else{ if(a>0&&(a!=1&&a!=-1)){ if(t==n+1) printf("%dx",a); else printf("+%dx",a); }else if(a==-1||a==1){ if(a>0&&t==n+1) printf("x"); else if(a>0&&t!=n+1) printf("+x"); else printf("-x"); }else if(a<0&&(a!=1&&a!=-1)){ printf("%dx",a); }else{ t--; } } } int a; scanf("%d",&a); if(a>0&&t!=0) printf("+"); printf("%d\n",a); } AC代码 #include <bits/stdc++.h> using namespace std; int main() { int n,a,i; cin>>n; for(i=n;i>=0;i--) { cin>>a; if(a) { if(i!=n&&a>0) cout<<"+"; if(abs(a)>1||i==0) cout<<a; if(a==-1&&i) cout<<"-"; if(i>1) cout<<"x^"<<i; if(i==1) cout<<"x"; } } return 0; } P1098 这道题只下载了第7个测试点 ...

March 13, 2023 · 2 min · Red

XUJC LAB V1.0 内测

目前正在完善功能,欢迎有意向参与改进计划的联系我 首页 题目 公告 排行榜 网址:XUJC LAB

January 20, 2023 · 1 min · Red

一次有惊无险服务器崩溃维修经历

2022年12月29日晚,我在这台服务器上安装了docker,之后再面板首页更新面板 2022年12月30日中午,当我想整理服务器文件时,发现宝塔面板已经没法登上去。我照常打开了Xshell,以为是宝塔输入界面的安全地址因为自动更换了,所以输入bt 14想看看更新的安全通道地址是什么 嗯…好像一切都挺正常的,地址也没错,但还是登不上去,是什么原因呢?不管了,先重启一波面板,嗯…还是不行?那就重启服务器试试 重启完后按理说应该已经没问题才对,可还是不行。这时候当我再次查看bt 14,好家伙,给我变成这样了 而且当我登入小屋网站后,发现原本正常的小屋竟然也变成了这样 当我正为此傻眼的时候,我还不知道,整整两天的服务器维修之旅才就此展开… 首先我执行了bt 16,抱着试一试面板自动修复的心态,等来了一串完全看不懂的报错信息— 这是啥?没见过,百度看看有没有解决方案 遗憾的是,经过大半天的搜索,这一次百度并不能帮我找到答案 不过根据报错信息和经验来看,我还是能隐隐约约知道问题所在大概就是以下几点造成的: 服务器python版本不兼容 pip未知文件冲突 随后我便立马向群里发出求救 尽管如同家人般的群友提供了一些帮助后,还是没能找到答案 随即我又找到了宝塔的官方客服,可是客服也没能给我答案,让我去论坛上发帖求助 不过之后群友发来的一个博客让我知道了问题根源所在 requests库的Failed to establish a new connection 一模一样的报错!这下可算知道报错原因,但这个原因很明显就是因为宝塔本身产品设计缺陷引起的,而我也并没有找到报错文件相关的官方技术文档,所以从根源上解决问题这条路已经可以宣告失败了 无奈之下,只好想其他方法。首要任务是保住小屋的数据。根据小屋的页面来看,nginx服务器是正常的,可是为什么没法正常显示我部署的文档内容呢?直觉告诉我应该是因为当时这个nginx是我在宝塔上下载的,所以和宝塔文件多少应该有点牵连。其中很重要的一点就是,我没有在nginx.conf里找到server函数。这也就更加证实了这个猜想,这个函数应该是被放在宝塔产品本身的某个已经损坏的文件里。 由于当时我也没有在宝塔上创建FTP用户,所以使用FTP备份文件也不可能了。 时间来到第二天中午,当我再次打开Xshell,发现连bt命令都已经执行不了,而很多linux命令也都无法执行。 最后只能求助淘宝,请宝塔运维工程师帮忙修复。可是问了许多家店也都表示“修不了”然后拒绝了我的请求。 直到后来找到一家店,店家同意帮我备份数据,可是要想修复损坏的系统文件和宝塔是做不了。 好在店家想到了用Navicat帮我先备份出数据库,再用XS导出文件。前后花了一个下午才跟支离破碎的服务器建立链接保住资源。 (店铺名也给大家,帮他家做个广告嘿嘿) 而根据店家介绍,用debian做服务器系统的已经很少,更多是用Ubuntu和Centos 于是那晚修完服务器的我愤怒地在空间里发了一条说说 总结一下,希望给自己和大家一个教训,一定要定期备份自己的服务器数据,否则很有可能出现像我这种情况后服务器内容备份不出来最后造成的惨案。

January 2, 2023 · 1 min · Red