【翻译】Subtyping and Variance / 子类型与变型
本文于 2021 年 1 月 5 日译自 《The Rustonomicon》中 Subtyping and Variance 一章,在原文基础上增加了部分目录格式以便于阅读。 前言 子类型是类型之间的一种关系,使静态类型语言更加宽松、灵活。 Rust 中的子类型和其他语言有所不同,更难举出简单的例子——毕竟子类型,尤其是变型,其本身已经很难理解了…
2021-1-05 19:09
|
2,502
|
|
3897 字
|
16 分钟
Berd’s Red Envelope 2021 WriteUp
摸鱼的 2020 最后几小时 Web 手的 Misc/Crypto 修行 在结束之前一直保持密码保护 已经结束力( 开始 由于 <a> 设置了 pointer-events: none; 因此无法点击。复制链接进入第一题。 一只方熊猫 下载后发现图片无法打开: 使用 010Editor 打开后提示 CRC 错误: 随便找了个爆破图片宽高…
2020-12-31 23:47
|
2,236
|
|
763 字
|
4 分钟
【中英对照】ALSA 音频 API 使用教程/A Tutorial on Using the ALSA Audio API
本文译自《A Tutorial on Using the ALSA Audio API》[1],基于 Deepl [2] 的翻译结果润色而得。部分翻译术语参考了另一篇翻译[3]。 开始 This document attempts to provide an introduction to the ALSA Audio API. It is not…
2020-12-22 13:46
|
2,019
|
|
6120 字
|
29 分钟
从 cue_scanner.l 看 CUE Sheet 的词法单元
CUE 这个格式对我而言一直是个很神秘的存在。在各种地方都能看见它的身影,直接打开也能看懂一些东西,但想要细说就做不到了。说到底,还是不知道它到底代表了什么,只能把它当播放列表来看。于是下定了决心要好好研究一下,于是就有了这篇文章。 研究目标 我们的研究目标是 libcue[1]。根据仓库的说法,这是 cuetools 中 cue 相关部分的 fo…
2020-12-20 1:13
|
1,045
|
|
1419 字
|
6 分钟
Postman 历史记录导出的解决方案
Postman 可以说是我在 CTF 中使用最多的工具了。它确实非常好用,但我并没有完全掌握它的使用之道,因此大量的历史请求堆在一起,显得环境无比混乱。 虽说是有想要改变的想法,但这些历史记录还是非常重要的,一时间难以割舍。于是便开始寻找导出的方案。 indexedDB 我们知道,Postman 是典型的 Electron 应用,而其数据则是存在了…
2020-12-11 14:13
|
2,323
|
|
260 字
|
2 分钟
Airsonic Advanced+Google Drive+Caddy 部署纪实
前言 最近总算是想要摆脱尴尬的听歌处境了。 自从网抑云百万版权倒了之后,下载到本地就变成了唯一的结果。下载的过程也花不了多少时间,下完之后直接就能听,没有任何版权损失的风险。中间试图转成过 QQ,但果然还是被劝退了。 上述列举的都是本地音乐的好处,但如果本地音乐全是好处的话那自然也不会有云音乐的兴起。本地音乐的缺点也很明显,就是多设备同步。 设备一…
2020-11-07 16:35
|
2,399
|
|
1888 字
|
8 分钟
X-NUCA 2020 – hellowasm 题解
前言 在比赛结束后一小时,得出了最终结果—— 怎么说呢,虽然有点遗憾,但也是做出来了。至少没白费这几小时的时间吧(笑) 比赛期间没做出来不叫 WriteUp(( 开始 开始游戏。首先尝试用 JEB 读一下: 可以看到,逻辑还是非常清楚的(部分函数名为手动替换)。但美中不足的是对最关键的 f8 和 f9 不能查看伪代码,好像是 br_table 没做…
2020-11-01 0:58
|
2,358
|
|
1652 字
|
7 分钟
[Node] child_process.fork 与 env 污染 RCE
Node 从8.0 开始支持 NODE_OPTIONS,而 Node 的参数中有一项名为 --require,可以加载执行一段 JavaScript 代码。这就是一切的起源。 当 NODE_OPTIONS 遇到 fork 我们先来看一下 child_process.fork 的源码: function fork(modulePath /* , ar…
2020-10-18 23:52
|
3,250
|
|
587 字
|
3 分钟
[CTF][JLU/2020] babywasm WriteUp
这篇文章记录的是吉林大学 2020 CTF 校赛的 babywasm 题解。用到的工具有 Chrome Developer Tool 和 wabt。 记录基本偏移信息 上来先观察 data 段。 我们发现了一些有趣的东西。首先是 flag 必备的 Spirit{},然后是弹出对话框中的文本,中间夹杂了一些不明所以的 ASCII 字符。 我们把这些东…
2020-10-11 23:55
|
2,699
|
|
1039 字
|
4 分钟
PHP 反序列化与经典利用
一直对 PHP 反序列化方面的内容似懂非懂,这次终于想着要好好梳理一下这方面的内容。 概念 我们知道,PHP 有 serialize 和 unserialize 这一对函数,前者负责序列化,后者负责反序列化。 序列化负责的是将 PHP 的对象序列化为字符串,而反序列化负责的则是将字符串转化回对象。 序列化 分隔符(结束符) PHP 反序列化中最常见…
2020-10-11 18:12
|
2,067
|
|
1301 字
|
6 分钟