From 78c0ec2b8377f5624bb69992a30ecde6c355f545 Mon Sep 17 00:00:00 2001 From: <> Date: Sun, 9 Jul 2023 05:07:56 +0000 Subject: [PATCH] Deployed af20b98 with MkDocs version: 1.4.3 --- .nojekyll | 0 404.html | 543 ++ CNAME | 1 + assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.220ee61c.min.js | 29 + assets/javascripts/bundle.220ee61c.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.74e28a9f.min.js | 42 + .../workers/search.74e28a9f.min.js.map | 8 + assets/stylesheets/main.26e3688c.min.css | 1 + assets/stylesheets/main.26e3688c.min.css.map | 1 + assets/stylesheets/palette.ecc896b0.min.css | 1 + .../stylesheets/palette.ecc896b0.min.css.map | 1 + css/custom.css | 46 + css/heti.css | 31 + images/cyberchef_encoding.png | Bin 0 -> 234454 bytes images/icon.png | Bin 0 -> 139113 bytes images/tool_pic_ghidra.png | Bin 0 -> 81690 bytes images/tool_pic_ida.png | Bin 0 -> 258533 bytes images/vscode_encoding.png | Bin 0 -> 28483 bytes index.html | 338 + intro/lab0/index.html | 640 ++ intro/misc-lab1/index.html | 593 ++ intro/pwn-lab1/index.html | 399 + intro/rev-lab1/index.html | 373 + intro/tools/index.html | 374 + intro/web-lab1/index.html | 337 + js/katex.js | 39 + search/search_index.json | 1 + sitemap.xml | 38 + sitemap.xml.gz | Bin 0 -> 251 bytes 62 files changed, 11043 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.220ee61c.min.js create mode 100644 assets/javascripts/bundle.220ee61c.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.74e28a9f.min.js create mode 100644 assets/javascripts/workers/search.74e28a9f.min.js.map create mode 100644 assets/stylesheets/main.26e3688c.min.css create mode 100644 assets/stylesheets/main.26e3688c.min.css.map create mode 100644 assets/stylesheets/palette.ecc896b0.min.css create mode 100644 assets/stylesheets/palette.ecc896b0.min.css.map create mode 100644 css/custom.css create mode 100644 css/heti.css create mode 100644 images/cyberchef_encoding.png create mode 100644 images/icon.png create mode 100644 images/tool_pic_ghidra.png create mode 100644 images/tool_pic_ida.png create mode 100644 images/vscode_encoding.png create mode 100644 index.html create mode 100644 intro/lab0/index.html create mode 100644 intro/misc-lab1/index.html create mode 100644 intro/pwn-lab1/index.html create mode 100644 intro/rev-lab1/index.html create mode 100644 intro/tools/index.html create mode 100644 intro/web-lab1/index.html create mode 100644 js/katex.js create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..a61cdce --- /dev/null +++ b/404.html @@ -0,0 +1,543 @@ + + + +
+ + + + + + + + + + + + + +本网站整合了课程中所有实验 / 作业,如有疑问请及时联系助教 / team-aaa@zju.edu.cn。
+根据去年课程的反馈,我们课程的内容相对而言知识点较多较难。为了选课学生的体验,此次选课设置一个 Lab 0,并在此 Lab 中呈现了学习该课程应该具备(或者说快速上手)的基础知识和技能。请有意向选课的同学完成后将实验文档提交至邮箱(team-aaa@zju.edu.cn)进行报名。
+如果出于时间原因无法按时完成,也请不要慌张,可以将未完成的报告同样提交,我们希望看到的是主动学习的态度 :D
+如果真的忙到一点也没有时间,也“欢迎”头铁选课(也请于邮箱中提交报名),凭借着付出,一定可以在课程中得到满满收获。
+注:Lab 0 本身也是小学期的首次作业。
+报名邮件请包含以下内容:
+在已经截止时间(6 月 11 日)后仍想参与补选课程的同学,请于考试周前的(6 月 19 日中午 12 点)通过邮件提交课程报名;细节同上所述。补选期间的名额更加有限,故我们将同样根据提交的报告 / 简历进行筛选,请补选的同学考虑做 Lab 0 时的体验做补选决定。
+关于选课、Lab 0 等任何与本次短学期课程有关的问题,都可以加 QQ 群 704639399 交流。
+本课程的 Lab 0 由两部分组成 :
+ +++鼓励多选,探索自己感兴趣的方向!
+
完成的报告请命名为 lab0_姓名_学号.pdf
与 6 月 11 日中午 12 点前,以邮件附件的形式提交到 team-aaa@zju.edu.cn;并于邮件中提供个人的联系方式~
lab 过程中遇到的问题或者任何与课程相关的问题欢迎加入课程交流群进行讨论,QQ 群号 704639399。
+Linux 环境的搭建与简单使用
+参考难度:★
+后续课程的许多内容都将在 Linux 操作系统的平台上完成,为了方便,本次课程提供了 ubuntu 虚拟机供下载
+++下载链接(其中用户名为 ctfer,密码为 aaa)
+
虚拟机中预装了课程中将要用到的各类工具及环境。
+++当然,如果你已经拥有了熟悉的 Linux 环境,请放心大胆使用。
+
具备 Linux 后,请观看 Shell 基础及 CLI 工具推荐 - 2023 春夏计算机学院朋辈辅学 课程视频,并在实验报告中给出任意 4 个 shell 命令的用法介绍以及在 Linux 环境下的实操截图。
+hint:
+基础的 python 编程
+参考难度:★
+后续的课程中不乏通过编程来:
+掌握脚本语言 python 会让这些事半功倍。请完成如下任务,并在实验报告中给出你的代码:
+++当然,即使你没有学习过 python 也无需慌张;你可以通过如菜鸟教程和各类慕课进行简单的学习。你无需成为一个 python master,基本的代码阅读能力以及编程能力足以使你通过此课。
+
请阅读和执行如下 python 程序,在实验报告中并解释其功能 : +
#!/usr/bin/python3
+
+data = input("give me your string: ")
+print("length of string:", len(data))
+
+data_old = data
+data_new = ""
+for d in data:
+ if d in 'abcdefghijklmnopqrstuvwxyz':
+ data_new += chr(ord(d) - 32)
+ elif d in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
+ data_new += chr(ord(d) + 32)
+ else:
+ data_new += d
+
+print("now your string:", data_new)
+
请通过 python 编程解决校巴上 calculator 这道编程题(需要内网访问),在实验报告中给出完整代码、成功解决的截图以及正确的 flag
+hint:
+eval
函数可以用于计算二进制相关的课题方向(Pwn 以及 Reverse)都需要 x86 汇编的知识,如果对该两方向有兴趣的话,可选完成这个 asm tour 汇编题目,在实验报告中给出你的解题过程。
+++如果完全没有接触过汇编语言,也无需担心,可以学习 hint 提到的资料。对指令、寄存器、调用规定等知识做个基本了解。
+
hint:
+ +参考难度:★★
+请访问网址 http://pumpk1n.com/lab0.php 这个神奇的页面藏着一个 flag,请尝试找到它,并在实验报告中记录你的过程。
+hint:
+参考难度:★★
+参考难度:★★★
+可恶,为什么这个可执行文件无法运行,其中究竟隐藏着什么秘密AAA{...}
):
你需要在实验报告中回答以下几个问题:
+AAA{...}
的字符串)是?你是如何获得它的?hint:
+GLIBC_2.34 not found
的报错,请下载此版本的题目附件,链接参考难度:★
+这里有一串被编码过的神秘的字符串,请找出有意义的原字符串(格式为 AAA{...}
):
8Q%uH7oV9C7o!2f7oD*@8Oc$J2Gu:s:JO2T78HTV8PrVj9/]^B:0'e_6SgJh7n,=8;)V$M:Gkm:92eJR8Oc-;;`$6b:Gk[5=]\L#7mT%14Ztqk
+
请在实验报告中给出你具体的解密过程。
+hint:
+参考难度:★★★
+下面这张图是 AAA 的 logo。真的……只是一个 logo 吗?其实这张图片中隐藏了一个 flag(格式 AAA{...}
),请你找出来。
请在实验报告中给出你的解题过程,包括你最终得到的 flag 内容。
+hint:
+AES 是一种对称加密机制,比 RSA 这样的非对称加密快许多。由于本题只涉及 AddRoundKey
和 Substitution Bytes
内容,所以只对实验相关部分进行简要说明,而 AES 的完整细节可以在这里阅读学习。
由于 AES 的加密过程中的状态用一个 4x4 的字节矩阵,所以对于字符串形式的明文,首先需要把其表示为一个 4x4 的字节矩阵(对,就是线性代数里那个矩阵),对应题目代码中的 bytes2matrix
,然后进行后续加密流程。
该部分的代码已经给出,不需要你补全,上述文字只是辅助理解。
+AddRoundKey 步骤很简单:它将当前状态 (4x4 的字节矩阵 ) 与当前轮密钥 (4x4 的字节矩阵 ) 进行异或运算。
+异或需要用到的轮密钥已经给出,对应题目代码中的 round_key
,你只需要 add_round_key
中的补全异或算法即可
将状态矩阵的每个字节替换为预设 16x16 查找表中的不同字节。查找表称为“Substitution box”或简称“S-box”,或许你可能会对为什么加密过程中需要 substitution 感到疑惑,没关系目前不需要理解相关内容。如果一句话概括原因,是为了使得 AES 的输入输出之间具有高的“非线性性”。
+值得注意的是,substitution 的算法在加密和解密过程中并没有不同,只是使用的 S-box 变成了原 S-box 的逆而已。为了使得题目看起来短一些,我删除了加密过程中使用的 S-box,只给出了加密的 S-box 的逆,对应题目代码中的 inv_s_box
。你只需要补全 sub_bytes
函数即可
参考难度:★★
+ +上题是对 AES 的简单抽象,其中需要你补全的 add_round_key
和 sub_bytes
代码符合 AES 的 AddRoundKey
和 SubBytes
的标准实现,请你阅读上述背景或查阅相关文档,实现这两个函数。如果实现正确会输出格式为 AAA{...}
的 flag。
请在实验报告中给出你的解题过程,包括你最终得到的 flag 内容。
+hint:
+本节 Lab 由以下两部分组成:
+具体实验报告需要写的内容会在下面具体题目里面描述。对于题目有任何问题都可以在群里 / 私戳 TonyCrane 提问。
+本次 lab 的 ddl 在发布两周以后即 7 月 21 日晚 23:59,请注意安排时间。
+我们课上介绍了字符编码的意义,并且较为详细的讲解了 ASCII、Latin-1、Unicode 以及系列编码的原理。在这个任务中,你将需要自行查阅资料了解 GB 2312、GBK、GB 18030 等国标码的编码方式。之后进一步探索了解各种情况乱码产生的原因,思考恢复乱码的可能性。
+这部分留给大家自行查阅资料了解。你需要知道的是 GB 2312、GBK、GB 18030 规定了三个不同大小的字符集,以及针对每个字符的编码。且 GB 18030 兼容 GBK 兼容 GB 2312 兼容 ASCII。更多细节可以自行查阅标准文件、介绍博客等。
+课上我们讲过了,通过一种字符编码来解读另一种字符编码的字节流,就会导致解读出来的字符并非预期,从而产生所谓“乱码”。这里我们将探究一下具体的原因。
+常见情况下有以下几种情形:
+注意要想造成乱码,一定说明字符编码之间存在不兼容部分,因此这几种编码互相兼容的 ASCII 编码一定不会出现乱码,而中文文本则会出现乱码。
+下面我会介绍几种研究乱码的方式,供大家参考。
+创建一个文本文件,使用 vscode 打开,在右下角你会看到文件的编码方式(一般情况下默认为 UTF-8),说明此时文件存储的二进制为 UTF-8 编码的字节流。这时你可以点击这个位置,选择“通过编码重新打开(Reopen with Encoding)”,选择 GBK 编码,这样你所看见的就是将原有文件字节流通过 GBK 编码解析出来的字符(即前面说到的第 1 种情况),不出意外它应该是乱码。
+ +或许你也会发现还有一个选项为“通过编码保存(Save with Encoding)”,它的作用就是将你现在看到的字符通过制定的编码方式重新编码为字节流,然后保存回文件中。比如继续上一步,我们看到了乱码,然后选择通过编码保存,选择 GBK,看起来没有任何事情发生。接下来再选择通过编码重新打开,选择 UTF-8,你或许会觉得此时恢复了正常,但有一些位置的字符变成了奇怪的符号,这种情况就是前面说到的第 5 中情况。
+同理,你可以通过同样的方式研究其他四种乱码。
+前面我们只看到了解码的结果,而没有看到文件存储字节流的内容。将字节流和解码得到的字符关联起来可以更好的理解乱码产生的原因。因此我们可以在 vscode 的基础上再使用十六进制编辑器来查看文件流的内容,进行比对。
+我们课上提到了,CyberChef 的 Input 和 Output 窗格很清晰地增加了字符编码的选项,因此可以很方便地进行编码的转换。
+ +但是 CyberChef 也存在一个问题,这个问题和处理 UTF-8 错误编码有关,关于 UTF-8 错误编码的更多信息后面马上就会说到。这是一个 bonus,如果你能够理解为什么 CyberChef 和 vscode 针对第二种情况的乱码结果不一样,你将得到 bonus。
+利用 python 也可以进行编码的转换,这里是一些例子:
+In [1]: "测试".encode("UTF-8").decode("GBK") # 第一种情况的乱码
+Out[1]: '娴嬭瘯'
+
+In [2]: "测试".encode("UTF-8") # 用 UTF-8 编码编码 “测试”
+Out[2]: b'\xe6\xb5\x8b\xe8\xaf\x95'
+
+In [3]: "娴嬭瘯".encode("GBK") # 用 GBK 编码编码 “娴嬭瘯”
+Out[3]: b'\xe6\xb5\x8b\xe8\xaf\x95'
+
+In [4]: bin(0xe6), bin(0xb5), bin(0x8b) # 将十六进制转换为二进制
+Out[4]: ('0b11100110', '0b10110101', '0b10001011')
+
+In [5]: hex(0b0110_110101_001011) # 手动解码 UTF-8 得到 Unicode 码位
+Out[5]: '0x6d4b'
+
+In [6]: "\u6d4b" # 将 Unicode 码位转换为字符
+Out[6]: '测'
+
我们课上讲到了 Latin-1 编码可以解码任意字节流,但 UTF-8 不能,它的编码情况只有以下四种:
+所以如果一个字符开头就出现了 10 xxxxxx 这样的字节,UTF-8 就不知道该怎么解码了。其他情况也会引起 UTF-8 解码错误。
+Python 处理这种错误的默认方法是直接抛出 UnicodeDecodeError,大部分情况下是不方便的,所以一般情况的处理方式是针对错误的字节流进行替换,比如将错误的字节流替换为 U+FFFD(即 �),这也是一些古怪乱码的来源之一。
+前面提到了 CyberChef 并没有采用这种处理方式,它将错误的字节也解码为了其他奇怪的字符,请你研究其中的原理,这是一个 bonus。
+那么总结一下你需要做的事情:
+我们课上介绍了维吉尼亚(Vigenere)密码,记明文为 \(\mathbf{P}\)、密文为 \(\mathbf{C}\)、密钥为 \(\mathbf{k}\),其加解密方式为:
+这里我们将其进行扩展,将字符集从 26 个字母扩展到 97 个字符,并将加法密码改为乘法密码,即:
+维吉尼亚密码的破解方法我们在课上也有介绍过,基本分为几步:
+而我们扩展后的维吉尼亚密码的破解方法也类似,通过你喜欢的语言实现即可
我们选取了一份 TOEFL 阅读文章,随机生成了 15-30 个字符长度的密钥,并对其进行了加密,现将密文提供给你,为了明确加密方法以及简单熟悉 python 使用,我们还提供了加密代码,请你实现对于密文的破解(flag 夹在了明文中间)。
+附件:encrypt.py、cipher.txt。
+这道题目也是校巴中的一道题目,附件也是完全一致的(除了一些代码格式更改),原题链接为 https://zjusec.com/challenges/31。
+请实现对给定密文的破解,拿到其中的 flag,提交到校巴题目中进行验证。实验报告中需要包含你的解题思路、完整解题代码以及 flag。
+如果无法完整完成解密,也请将你的尝试写在报告中,我们会根据完成情况给部分分。
+选做此题目需要同时完成以下两个任务。
+这是 TonyCrane 在日本拍的一张照片(请下载图片后做题):
+ +请你回答以下两个问题:
+将你的答案以及解题思路写在实验报告中。同样,没有完全做出来也可以写出你的思考,我们也会考虑给出部分分。
+这是 yyy 用手机拍的一张照片(请下载图片后做题):
+ +请回答以下两个问题:
+请通过 http://nc.tonycrane.cc:65111/ 进行回答并验证(请不要进行任何形式的爆破答案),显示 flag 即为回答正确。将你的结果、回答截屏以及解题思路写在实验报告中。同样,没有完全做出来也可以写出你的思考,我们也会考虑给出部分分。
+本节 Lab 由以下两部分组成:
+课上作为引子的 hello
赛题,请通过其熟悉 pwntools 的使用,并完成攻击远程,取得 flag1 (15 points) 与 flag2 (points)
116.62.247.145
, Port: 10100
请在报告中附上漏洞分析以及做法,给出成功拿到 flag 的截图,并将攻击代码以附件形式上传
+课上讲解的 injection1
赛题,请逆向分析程序,并实现对其中 Code Injection 漏洞的攻击,取得位于远程服务器上的 flag (25 points)
116.62.247.145
, Port: 10101
请在报告中附上漏洞分析以及做法,给出成功拿到 flag 的截图,并将攻击代码以附件形式上传
+++注:路径穿越不给分哦 :-)
+
课上讲解的 injection2
赛题,请实现
delegate
代码,完成后取得 FLAG (10 points)116.62.247.145
, Port: 10102
请在报告中附上漏洞分析以及做法,给出对于你使用的 shellcode 代码的分析(这个代码到底干了啥),给出成功拿到 flag 的截图,并将攻击代码以附件形式上传
+位于校巴的“超老” shellcode 赛题,在完成以上的基础后,做它一定是砍瓜切菜
+++注:这个题是 32 位架构的 shellcode 哦,不要弄错了
+
请在报告中附上漏洞分析以及做法,给出成功拿到 flag 的截图,并将攻击代码以附件形式上传
+在 Task 3 的基础上,injection3
赛题对于输入的代码做了一些限制,你还能成功攻击么?请完成
injection3
和 injection2
的不同,实现了怎样的检查?(5 points)116.62.247.145
, Port: 10103
请在报告中给出你的分析结果,并附上漏洞分析以及做法,给出成功拿到 flag 的截图,并将攻击代码以附件形式上传
+本节 Lab 由以下两部分组成:
+课上作为练习的 practice
赛题,请回顾课上讲解的内容,完成题目并回答课上提出的 5 个问题:
在 practice
赛题的基础上,该题目稍有修改,请你稍加探索完成题目并回答以下问题:
看似随机却并不随机,看似模糊却又清晰,请你耐心分析并提交:
+我们在发布的虚拟机
+++下载链接(其中用户名为 ctfer,密码为 aaa)
+
中预装了一些课程中可能会使用到的工具,这里将对其进行展开介绍。同学们也可以根据自身需要,在熟悉的平台中使用这些工具。
+New
选择二进制程序进行反编译++备注:预装的 IDA 是需要联网使用的免费试用版,如果安装其他渠道下载到的破解版,请注意避免中文路径问题。
+
由于高版本 ubuntu 使用的是 SSL3+ 的版本,在 IDA 与远端 server 使用时可能会出问题,如果你遇到了 cloud server not avaliable
的问题,其关键原因是 SSL3+ 拿掉了 SSL_get_peer_certificate
这个方法,见链接(又是不向前兼容的设计)
为了修复,我们可以将旧版本 SSL1.1 替换目前环境的 SSL3+,请下载修复附件,解压缩后在目标目录执行 fix.sh
脚本(可能需要 sudo
权限),完成后再次测试 IDA 应该就可以正常通过 cloud server 进行 F5 了
~/Tools/ghidra_10.3_PUBLIC/ghidraRun
脚本即可启动,效果如下图,使用的教程可以找网上的相关博客,如这一篇gdb
即可以看到插件效果……
+除此外还有一些额外的工具,这些工具会后续补充介绍,或在课程使用时会额外给出讲解。
+Implement a DNS rebinder:
+Finish the challenge SSRF in SchoolBus (https://zjusec.com/challenges/47)
+(Using the rebinder in Task 1 is not required)
+For task 1, code with comments (or additional docs) and a running demo.
+For task 2, your writeup.
+PDF is recommended.
+\u672c\u7f51\u7ad9\u6574\u5408\u4e86\u8bfe\u7a0b\u4e2d\u6240\u6709\u5b9e\u9a8c/\u4f5c\u4e1a\uff0c\u5982\u6709\u7591\u95ee\u8bf7\u53ca\u65f6\u8054\u7cfb\u52a9\u6559/team-aaa@zju.edu.cn\u3002
"},{"location":"#_1","title":"\u5173\u4e8e\u8bfe\u7a0b\u62a5\u540d","text":"\u6839\u636e\u53bb\u5e74\u8bfe\u7a0b\u7684\u53cd\u9988\uff0c\u6211\u4eec\u8bfe\u7a0b\u7684\u5185\u5bb9\u76f8\u5bf9\u800c\u8a00\u77e5\u8bc6\u70b9\u8f83\u591a\u8f83\u96be\u3002\u4e3a\u4e86\u9009\u8bfe\u5b66\u751f\u7684\u4f53\u9a8c\uff0c\u6b64\u6b21\u9009\u8bfe\u8bbe\u7f6e\u4e00\u4e2a Lab 0\uff0c\u5e76\u5728\u6b64 Lab \u4e2d\u5448\u73b0\u4e86\u5b66\u4e60\u8be5\u8bfe\u7a0b\u5e94\u8be5\u5177\u5907\uff08\u6216\u8005\u8bf4\u5feb\u901f\u4e0a\u624b\uff09\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u6280\u80fd\u3002\u8bf7\u6709\u610f\u5411\u9009\u8bfe\u7684\u540c\u5b66\u5b8c\u6210\u540e\u5c06\u5b9e\u9a8c\u6587\u6863\u63d0\u4ea4\u81f3\u90ae\u7bb1\uff08team-aaa@zju.edu.cn\uff09\u8fdb\u884c\u62a5\u540d\u3002
\u5982\u679c\u51fa\u4e8e\u65f6\u95f4\u539f\u56e0\u65e0\u6cd5\u6309\u65f6\u5b8c\u6210\uff0c\u4e5f\u8bf7\u4e0d\u8981\u614c\u5f20\uff0c\u53ef\u4ee5\u5c06\u672a\u5b8c\u6210\u7684\u62a5\u544a\u540c\u6837\u63d0\u4ea4\uff0c\u6211\u4eec\u5e0c\u671b\u770b\u5230\u7684\u662f\u4e3b\u52a8\u5b66\u4e60\u7684\u6001\u5ea6 :D
\u5982\u679c\u771f\u7684\u5fd9\u5230\u4e00\u70b9\u4e5f\u6ca1\u6709\u65f6\u95f4\uff0c\u4e5f\u201c\u6b22\u8fce\u201d\u5934\u94c1\u9009\u8bfe\uff08\u4e5f\u8bf7\u4e8e\u90ae\u7bb1\u4e2d\u63d0\u4ea4\u62a5\u540d\uff09\uff0c\u51ed\u501f\u7740\u4ed8\u51fa\uff0c\u4e00\u5b9a\u53ef\u4ee5\u5728\u8bfe\u7a0b\u4e2d\u5f97\u5230\u6ee1\u6ee1\u6536\u83b7\u3002
\u6ce8\uff1aLab 0 \u672c\u8eab\u4e5f\u662f\u5c0f\u5b66\u671f\u7684\u9996\u6b21\u4f5c\u4e1a\u3002
\u62a5\u540d\u90ae\u4ef6\u8bf7\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\uff1a
\u5728\u5df2\u7ecf\u622a\u6b62\u65f6\u95f4\uff086\u670811\u65e5\uff09\u540e\u4ecd\u60f3\u53c2\u4e0e\u8865\u9009\u8bfe\u7a0b\u7684\u540c\u5b66\uff0c\u8bf7\u4e8e\u8003\u8bd5\u5468\u524d\u7684\uff086\u670819\u65e5\u4e2d\u534812\u70b9\uff09\u901a\u8fc7\u90ae\u4ef6\u63d0\u4ea4\u8bfe\u7a0b\u62a5\u540d\uff1b\u7ec6\u8282\u540c\u4e0a\u6240\u8ff0\u3002\u8865\u9009\u671f\u95f4\u7684\u540d\u989d\u66f4\u52a0\u6709\u9650\uff0c\u6545\u6211\u4eec\u5c06\u540c\u6837\u6839\u636e\u63d0\u4ea4\u7684\u62a5\u544a/\u7b80\u5386\u8fdb\u884c\u7b5b\u9009\uff0c\u8bf7\u8865\u9009\u7684\u540c\u5b66\u8003\u8651\u505a Lab 0 \u65f6\u7684\u4f53\u9a8c\u505a\u8865\u9009\u51b3\u5b9a\u3002
"},{"location":"#_3","title":"\u8bfe\u7a0b\u4ea4\u6d41\u7fa4","text":"\u5173\u4e8e\u9009\u8bfe\u3001Lab 0 \u7b49\u4efb\u4f55\u4e0e\u672c\u6b21\u77ed\u5b66\u671f\u8bfe\u7a0b\u6709\u5173\u7684\u95ee\u9898\uff0c\u90fd\u53ef\u4ee5\u52a0 QQ \u7fa4 704639399 \u4ea4\u6d41\u3002
"},{"location":"intro/lab0/","title":"Lab 0\uff1a\u57fa\u7840\u77e5\u8bc6\u53ca\u6280\u80fd","text":"\u672c\u8bfe\u7a0b\u7684 Lab 0 \u7531\u4e24\u90e8\u5206\u7ec4\u6210:
\u9f13\u52b1\u591a\u9009\uff0c\u63a2\u7d22\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\uff01
\u5b8c\u6210\u7684\u62a5\u544a\u8bf7\u547d\u540d\u4e3a lab0_\u59d3\u540d_\u5b66\u53f7.pdf
\u4e0e6\u670811\u65e5\u4e2d\u534812\u70b9\u524d\uff0c\u4ee5\u90ae\u4ef6\u9644\u4ef6\u7684\u5f62\u5f0f\u63d0\u4ea4\u5230 team-aaa@zju.edu.cn\uff1b\u5e76\u4e8e\u90ae\u4ef6\u4e2d\u63d0\u4f9b\u4e2a\u4eba\u7684\u8054\u7cfb\u65b9\u5f0f\uff5e
lab\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u6216\u8005\u4efb\u4f55\u4e0e\u8bfe\u7a0b\u76f8\u5173\u7684\u95ee\u9898\u6b22\u8fce\u52a0\u5165\u8bfe\u7a0b\u4ea4\u6d41\u7fa4\u8fdb\u884c\u8ba8\u8bba\uff0cQQ \u7fa4\u53f7 704639399\u3002
"},{"location":"intro/lab0/#prerequisite","title":"Prerequisite","text":""},{"location":"intro/lab0/#challange-1","title":"Challange 1","text":"Linux \u73af\u5883\u7684\u642d\u5efa\u4e0e\u7b80\u5355\u4f7f\u7528
\u53c2\u8003\u96be\u5ea6\uff1a\u2605
\u540e\u7eed\u8bfe\u7a0b\u7684\u8bb8\u591a\u5185\u5bb9\u90fd\u5c06\u5728 Linux \u64cd\u4f5c\u7cfb\u7edf\u7684\u5e73\u53f0\u4e0a\u5b8c\u6210\uff0c\u4e3a\u4e86\u65b9\u4fbf\uff0c\u672c\u6b21\u8bfe\u7a0b\u63d0\u4f9b\u4e86 ubuntu \u865a\u62df\u673a\u4f9b\u4e0b\u8f7d
\u4e0b\u8f7d\u94fe\u63a5\uff08\u5176\u4e2d\u7528\u6237\u540d\u4e3a ctfer\uff0c\u5bc6\u7801\u4e3a aaa\uff09
\u865a\u62df\u673a\u4e2d\u9884\u88c5\u4e86\u8bfe\u7a0b\u4e2d\u5c06\u8981\u7528\u5230\u7684\u5404\u7c7b\u5de5\u5177\u53ca\u73af\u5883\u3002
\u5f53\u7136\uff0c\u5982\u679c\u4f60\u5df2\u7ecf\u62e5\u6709\u4e86\u719f\u6089\u7684 Linux \u73af\u5883\uff0c\u8bf7\u653e\u5fc3\u5927\u80c6\u4f7f\u7528\u3002
\u5177\u5907 Linux \u540e\uff0c\u8bf7\u89c2\u770b Shell \u57fa\u7840\u53ca CLI \u5de5\u5177\u63a8\u8350 - 2023 \u6625\u590f\u8ba1\u7b97\u673a\u5b66\u9662\u670b\u8f88\u8f85\u5b66 \u8bfe\u7a0b\u89c6\u9891\uff0c\u5e76\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u4efb\u610f4\u4e2a shell \u547d\u4ee4\u7684\u7528\u6cd5\u4ecb\u7ecd\u4ee5\u53ca\u5728 Linux \u73af\u5883\u4e0b\u7684\u5b9e\u64cd\u622a\u56fe\u3002
hint:
\u57fa\u7840\u7684 python \u7f16\u7a0b
\u53c2\u8003\u96be\u5ea6\uff1a\u2605
\u540e\u7eed\u7684\u8bfe\u7a0b\u4e2d\u4e0d\u4e4f\u901a\u8fc7\u7f16\u7a0b\u6765\uff1a
\u638c\u63e1\u811a\u672c\u8bed\u8a00 python \u4f1a\u8ba9\u8fd9\u4e9b\u4e8b\u534a\u529f\u500d\u3002\u8bf7\u5b8c\u6210\u5982\u4e0b\u4efb\u52a1\uff0c\u5e76\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u4f60\u7684\u4ee3\u7801\uff1a
\u5f53\u7136\uff0c\u5373\u4f7f\u4f60\u6ca1\u6709\u5b66\u4e60\u8fc7 python \u4e5f\u65e0\u9700\u614c\u5f20\uff1b\u4f60\u53ef\u4ee5\u901a\u8fc7\u5982\u83dc\u9e1f\u6559\u7a0b\u548c\u5404\u7c7b\u6155\u8bfe\u8fdb\u884c\u7b80\u5355\u7684\u5b66\u4e60\u3002\u4f60\u65e0\u9700\u6210\u4e3a\u4e00\u4e2a python master\uff0c\u57fa\u672c\u7684\u4ee3\u7801\u9605\u8bfb\u80fd\u529b\u4ee5\u53ca\u7f16\u7a0b\u80fd\u529b\u8db3\u4ee5\u4f7f\u4f60\u901a\u8fc7\u6b64\u8bfe\u3002
\u8bf7\u9605\u8bfb\u548c\u6267\u884c\u5982\u4e0b python \u7a0b\u5e8f\uff0c\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u5e76\u89e3\u91ca\u5176\u529f\u80fd:
#!/usr/bin/python3\ndata = input(\"give me your string: \")\nprint(\"length of string:\", len(data))\ndata_old = data\ndata_new = \"\"\nfor d in data:\nif d in 'abcdefghijklmnopqrstuvwxyz':\ndata_new += chr(ord(d) - 32)\nelif d in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':\ndata_new += chr(ord(d) + 32)\nelse:\ndata_new += d\nprint(\"now your string:\", data_new)\n
\u8bf7\u901a\u8fc7 python \u7f16\u7a0b\u89e3\u51b3\u6821\u5df4\u4e0a calculator \u8fd9\u9053\u7f16\u7a0b\u9898\uff08\u9700\u8981\u5185\u7f51\u8bbf\u95ee\uff09\uff0c\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u5b8c\u6574\u4ee3\u7801\u3001\u6210\u529f\u89e3\u51b3\u7684\u622a\u56fe\u4ee5\u53ca\u6b63\u786e\u7684 flag
hint:
eval
\u51fd\u6570\u53ef\u4ee5\u7528\u4e8e\u8ba1\u7b97\u4e8c\u8fdb\u5236\u76f8\u5173\u7684\u8bfe\u9898\u65b9\u5411\uff08Pwn \u4ee5\u53ca Reverse\uff09\u90fd\u9700\u8981 x86 \u6c47\u7f16\u7684\u77e5\u8bc6\uff0c\u5982\u679c\u5bf9\u8be5\u4e24\u65b9\u5411\u6709\u5174\u8da3\u7684\u8bdd\uff0c\u53ef\u9009\u5b8c\u6210\u8fd9\u4e2a asm tour \u6c47\u7f16\u9898\u76ee\uff0c\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u4f60\u7684\u89e3\u9898\u8fc7\u7a0b\u3002
\u5982\u679c\u5b8c\u5168\u6ca1\u6709\u63a5\u89e6\u8fc7\u6c47\u7f16\u8bed\u8a00\uff0c\u4e5f\u65e0\u9700\u62c5\u5fc3\uff0c\u53ef\u4ee5\u5b66\u4e60 hint \u63d0\u5230\u7684\u8d44\u6599\u3002\u5bf9\u6307\u4ee4\u3001\u5bc4\u5b58\u5668\u3001\u8c03\u7528\u89c4\u5b9a\u7b49\u77e5\u8bc6\u505a\u4e2a\u57fa\u672c\u4e86\u89e3\u3002
hint:
\u53c2\u8003\u96be\u5ea6\uff1a\u2605\u2605
\u8bf7\u8bbf\u95ee\u7f51\u5740 http://pumpk1n.com/lab0.php \u8fd9\u4e2a\u795e\u5947\u7684\u9875\u9762\u85cf\u7740\u4e00\u4e2a flag\uff0c\u8bf7\u5c1d\u8bd5\u627e\u5230\u5b83\uff0c\u5e76\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u8bb0\u5f55\u4f60\u7684\u8fc7\u7a0b\u3002
hint:
\u53c2\u8003\u96be\u5ea6\uff1a\u2605\u2605
\u53c2\u8003\u96be\u5ea6\uff1a\u2605\u2605\u2605
\u53ef\u6076\uff0c\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u65e0\u6cd5\u8fd0\u884c\uff0c\u5176\u4e2d\u7a76\u7adf\u9690\u85cf\u7740\u4ec0\u4e48\u79d8\u5bc6\uff01\uff08\u8be5\u79d8\u5bc6\u4e3a\u4e00\u4e32\u6709\u610f\u4e49\u7684\u5b57\u7b26\u4e32\uff0c\u683c\u5f0f\u4e3a AAA{...}
\uff09\uff1a
\u9898\u76ee\u4e0b\u8f7d\u94fe\u63a5
\u4f60\u9700\u8981\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u56de\u7b54\u4ee5\u4e0b\u51e0\u4e2a\u95ee\u9898\uff1a
AAA{...}
\u7684\u5b57\u7b26\u4e32\uff09\u662f\uff1f\u4f60\u662f\u5982\u4f55\u83b7\u5f97\u5b83\u7684\uff1fhint:
GLIBC_2.34 not found
\u7684\u62a5\u9519\uff0c\u8bf7\u4e0b\u8f7d\u6b64\u7248\u672c\u7684\u9898\u76ee\u9644\u4ef6\uff0c\u94fe\u63a5\u53c2\u8003\u96be\u5ea6\uff1a\u2605
\u8fd9\u91cc\u6709\u4e00\u4e32\u88ab\u7f16\u7801\u8fc7\u7684\u795e\u79d8\u7684\u5b57\u7b26\u4e32\uff0c\u8bf7\u627e\u51fa\u6709\u610f\u4e49\u7684\u539f\u5b57\u7b26\u4e32\uff08\u683c\u5f0f\u4e3a AAA{...}
\uff09\uff1a
8Q%uH7oV9C7o!2f7oD*@8Oc$J2Gu:s:JO2T78HTV8PrVj9/]^B:0'e_6SgJh7n,=8;)V$M:Gkm:92eJR8Oc-;;`$6b:Gk[5=]\\L#7mT%14Ztqk\n
\u8bf7\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u4f60\u5177\u4f53\u7684\u89e3\u5bc6\u8fc7\u7a0b\u3002
hint:
\u53c2\u8003\u96be\u5ea6\uff1a\u2605\u2605\u2605
\u4e0b\u9762\u8fd9\u5f20\u56fe\u662f AAA \u7684 logo\u3002\u771f\u7684\u2026\u2026\u53ea\u662f\u4e00\u4e2a logo \u5417\uff1f\u5176\u5b9e\u8fd9\u5f20\u56fe\u7247\u4e2d\u9690\u85cf\u4e86\u4e00\u4e2a flag\uff08\u683c\u5f0f AAA{...}
\uff09\uff0c\u8bf7\u4f60\u627e\u51fa\u6765\u3002
\u8bf7\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u4f60\u7684\u89e3\u9898\u8fc7\u7a0b\uff0c\u5305\u62ec\u4f60\u6700\u7ec8\u5f97\u5230\u7684 flag \u5185\u5bb9\u3002
hint\uff1a
AES\u662f\u4e00\u79cd\u5bf9\u79f0\u52a0\u5bc6\u673a\u5236\uff0c\u6bd4RSA\u8fd9\u6837\u7684\u975e\u5bf9\u79f0\u52a0\u5bc6\u5feb\u8bb8\u591a\u3002\u7531\u4e8e\u672c\u9898\u53ea\u6d89\u53ca AddRoundKey
\u548c Substitution Bytes
\u5185\u5bb9\uff0c\u6240\u4ee5\u53ea\u5bf9\u5b9e\u9a8c\u76f8\u5173\u90e8\u5206\u8fdb\u884c\u7b80\u8981\u8bf4\u660e\uff0c\u800c AES \u7684\u5b8c\u6574\u7ec6\u8282\u53ef\u4ee5\u5728\u8fd9\u91cc\u9605\u8bfb\u5b66\u4e60\u3002
\u7531\u4e8e AES \u7684\u52a0\u5bc6\u8fc7\u7a0b\u4e2d\u7684\u72b6\u6001\u7528\u4e00\u4e2a 4x4 \u7684\u5b57\u8282\u77e9\u9635\uff0c\u6240\u4ee5\u5bf9\u4e8e\u5b57\u7b26\u4e32\u5f62\u5f0f\u7684\u660e\u6587\uff0c\u9996\u5148\u9700\u8981\u628a\u5176\u8868\u793a\u4e3a\u4e00\u4e2a 4x4 \u7684\u5b57\u8282\u77e9\u9635\uff08\u5bf9\uff0c\u5c31\u662f\u7ebf\u6027\u4ee3\u6570\u91cc\u90a3\u4e2a\u77e9\u9635\uff09\uff0c\u5bf9\u5e94\u9898\u76ee\u4ee3\u7801\u4e2d\u7684 bytes2matrix
\uff0c\u7136\u540e\u8fdb\u884c\u540e\u7eed\u52a0\u5bc6\u6d41\u7a0b\u3002
\u8be5\u90e8\u5206\u7684\u4ee3\u7801\u5df2\u7ecf\u7ed9\u51fa\uff0c\u4e0d\u9700\u8981\u4f60\u8865\u5168\uff0c\u4e0a\u8ff0\u6587\u5b57\u53ea\u662f\u8f85\u52a9\u7406\u89e3\u3002
"},{"location":"intro/lab0/#addroundkey","title":"AddRoundKey","text":"AddRoundKey \u6b65\u9aa4\u5f88\u7b80\u5355\uff1a\u5b83\u5c06\u5f53\u524d\u72b6\u6001(4x4 \u7684\u5b57\u8282\u77e9\u9635)\u4e0e\u5f53\u524d\u8f6e\u5bc6\u94a5(4x4 \u7684\u5b57\u8282\u77e9\u9635)\u8fdb\u884c\u5f02\u6216\u8fd0\u7b97\u3002
\u5f02\u6216\u9700\u8981\u7528\u5230\u7684\u8f6e\u5bc6\u94a5\u5df2\u7ecf\u7ed9\u51fa\uff0c\u5bf9\u5e94\u9898\u76ee\u4ee3\u7801\u4e2d\u7684 round_key
\uff0c\u4f60\u53ea\u9700\u8981 add_round_key
\u4e2d\u7684\u8865\u5168\u5f02\u6216\u7b97\u6cd5\u5373\u53ef\u3002\uff08\u4e0d\u8d85\u8fc7\u4e09\u884c\u2757\ufe0f\uff09
\u5c06\u72b6\u6001\u77e9\u9635\u7684\u6bcf\u4e2a\u5b57\u8282\u66ff\u6362\u4e3a\u9884\u8bbe 16x16 \u67e5\u627e\u8868\u4e2d\u7684\u4e0d\u540c\u5b57\u8282\u3002\u67e5\u627e\u8868\u79f0\u4e3a\u201cSubstitution box\u201d\u6216\u7b80\u79f0\u201cS-box\u201d\uff0c\u6216\u8bb8\u4f60\u53ef\u80fd\u4f1a\u5bf9\u4e3a\u4ec0\u4e48\u52a0\u5bc6\u8fc7\u7a0b\u4e2d\u9700\u8981 substitution \u611f\u5230\u7591\u60d1\uff0c\u6ca1\u5173\u7cfb\u76ee\u524d\u4e0d\u9700\u8981\u7406\u89e3\u76f8\u5173\u5185\u5bb9\u3002\u5982\u679c\u4e00\u53e5\u8bdd\u6982\u62ec\u539f\u56e0\uff0c\u662f\u4e3a\u4e86\u4f7f\u5f97AES\u7684\u8f93\u5165\u8f93\u51fa\u4e4b\u95f4\u5177\u6709\u9ad8\u7684\u201c\u975e\u7ebf\u6027\u6027\u201d\u3002
\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0csubstitution \u7684\u7b97\u6cd5\u5728\u52a0\u5bc6\u548c\u89e3\u5bc6\u8fc7\u7a0b\u4e2d\u5e76\u6ca1\u6709\u4e0d\u540c\uff0c\u53ea\u662f\u4f7f\u7528\u7684 S-box \u53d8\u6210\u4e86\u539f S-box \u7684\u9006\u800c\u5df2\u3002\u4e3a\u4e86\u4f7f\u5f97\u9898\u76ee\u770b\u8d77\u6765\u77ed\u4e00\u4e9b\uff0c\u6211\u5220\u9664\u4e86\u52a0\u5bc6\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684 S-box\uff0c\u53ea\u7ed9\u51fa\u4e86\u52a0\u5bc6\u7684 S-box \u7684\u9006\uff0c\u5bf9\u5e94\u9898\u76ee\u4ee3\u7801\u4e2d\u7684 inv_s_box
\u3002\u4f60\u53ea\u9700\u8981\u8865\u5168 sub_bytes
\u51fd\u6570\u5373\u53ef\u3002\uff08\u540c\u6837\u4e0d\u8d85\u8fc7\u4e09\u884c\u2757\ufe0f\uff09
\u53c2\u8003\u96be\u5ea6\uff1a\u2605\u2605
\u9898\u76ee\u4e0b\u8f7d\u94fe\u63a5
\u4e0a\u9898\u662f\u5bf9AES\u7684\u7b80\u5355\u62bd\u8c61\uff0c\u5176\u4e2d\u9700\u8981\u4f60\u8865\u5168\u7684 add_round_key
\u548c sub_bytes
\u4ee3\u7801\u7b26\u5408AES\u7684 AddRoundKey
\u548c SubBytes
\u7684\u6807\u51c6\u5b9e\u73b0\uff0c\u8bf7\u4f60\u9605\u8bfb\u4e0a\u8ff0\u80cc\u666f\u6216\u67e5\u9605\u76f8\u5173\u6587\u6863\uff0c\u5b9e\u73b0\u8fd9\u4e24\u4e2a\u51fd\u6570\u3002\u5982\u679c\u5b9e\u73b0\u6b63\u786e\u4f1a\u8f93\u51fa\u683c\u5f0f\u4e3a AAA{...}
\u7684 flag\u3002
\u8bf7\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u7ed9\u51fa\u4f60\u7684\u89e3\u9898\u8fc7\u7a0b\uff0c\u5305\u62ec\u4f60\u6700\u7ec8\u5f97\u5230\u7684 flag \u5185\u5bb9\u3002
hint:
\u672c\u8282 Lab \u7531\u4ee5\u4e0b\u4e24\u90e8\u5206\u7ec4\u6210\uff1a
\u5177\u4f53\u5b9e\u9a8c\u62a5\u544a\u9700\u8981\u5199\u7684\u5185\u5bb9\u4f1a\u5728\u4e0b\u9762\u5177\u4f53\u9898\u76ee\u91cc\u9762\u63cf\u8ff0\u3002\u5bf9\u4e8e\u9898\u76ee\u6709\u4efb\u4f55\u95ee\u9898\u90fd\u53ef\u4ee5\u5728\u7fa4\u91cc/\u79c1\u6233 TonyCrane \u63d0\u95ee\u3002
\u672c\u6b21 lab \u7684 ddl \u5728\u53d1\u5e03\u4e24\u5468\u4ee5\u540e\u5373 7 \u6708 21 \u65e5\u665a 23:59\uff0c\u8bf7\u6ce8\u610f\u5b89\u6392\u65f6\u95f4\u3002
"},{"location":"intro/misc-lab1/#task-1","title":"Task 1","text":""},{"location":"intro/misc-lab1/#background","title":"Background","text":"\u6211\u4eec\u8bfe\u4e0a\u4ecb\u7ecd\u4e86\u5b57\u7b26\u7f16\u7801\u7684\u610f\u4e49\uff0c\u5e76\u4e14\u8f83\u4e3a\u8be6\u7ec6\u7684\u8bb2\u89e3\u4e86 ASCII\u3001Latin-1\u3001Unicode \u4ee5\u53ca\u7cfb\u5217\u7f16\u7801\u7684\u539f\u7406\u3002\u5728\u8fd9\u4e2a\u4efb\u52a1\u4e2d\uff0c\u4f60\u5c06\u9700\u8981\u81ea\u884c\u67e5\u9605\u8d44\u6599\u4e86\u89e3 GB 2312\u3001GBK\u3001GB 18030 \u7b49\u56fd\u6807\u7801\u7684\u7f16\u7801\u65b9\u5f0f\u3002\u4e4b\u540e\u8fdb\u4e00\u6b65\u63a2\u7d22\u4e86\u89e3\u5404\u79cd\u60c5\u51b5\u4e71\u7801\u4ea7\u751f\u7684\u539f\u56e0\uff0c\u601d\u8003\u6062\u590d\u4e71\u7801\u7684\u53ef\u80fd\u6027\u3002
"},{"location":"intro/misc-lab1/#gb","title":"GB \u7cfb\u5217\u7f16\u7801","text":"\u8fd9\u90e8\u5206\u7559\u7ed9\u5927\u5bb6\u81ea\u884c\u67e5\u9605\u8d44\u6599\u4e86\u89e3\u3002\u4f60\u9700\u8981\u77e5\u9053\u7684\u662f GB 2312\u3001GBK\u3001GB 18030 \u89c4\u5b9a\u4e86\u4e09\u4e2a\u4e0d\u540c\u5927\u5c0f\u7684\u5b57\u7b26\u96c6\uff0c\u4ee5\u53ca\u9488\u5bf9\u6bcf\u4e2a\u5b57\u7b26\u7684\u7f16\u7801\u3002\u4e14 GB 18030 \u517c\u5bb9 GBK \u517c\u5bb9 GB 2312 \u517c\u5bb9 ASCII\u3002\u66f4\u591a\u7ec6\u8282\u53ef\u4ee5\u81ea\u884c\u67e5\u9605\u6807\u51c6\u6587\u4ef6\u3001\u4ecb\u7ecd\u535a\u5ba2\u7b49\u3002
"},{"location":"intro/misc-lab1/#_1","title":"\u4e71\u7801\u539f\u56e0","text":"\u8bfe\u4e0a\u6211\u4eec\u8bb2\u8fc7\u4e86\uff0c\u901a\u8fc7\u4e00\u79cd\u5b57\u7b26\u7f16\u7801\u6765\u89e3\u8bfb\u53e6\u4e00\u79cd\u5b57\u7b26\u7f16\u7801\u7684\u5b57\u8282\u6d41\uff0c\u5c31\u4f1a\u5bfc\u81f4\u89e3\u8bfb\u51fa\u6765\u7684\u5b57\u7b26\u5e76\u975e\u9884\u671f\uff0c\u4ece\u800c\u4ea7\u751f\u6240\u8c13\u201c\u4e71\u7801\u201d\u3002\u8fd9\u91cc\u6211\u4eec\u5c06\u63a2\u7a76\u4e00\u4e0b\u5177\u4f53\u7684\u539f\u56e0\u3002
\u5e38\u89c1\u60c5\u51b5\u4e0b\u6709\u4ee5\u4e0b\u51e0\u79cd\u60c5\u5f62\uff1a
\u6ce8\u610f\u8981\u60f3\u9020\u6210\u4e71\u7801\uff0c\u4e00\u5b9a\u8bf4\u660e\u5b57\u7b26\u7f16\u7801\u4e4b\u95f4\u5b58\u5728\u4e0d\u517c\u5bb9\u90e8\u5206\uff0c\u56e0\u6b64\u8fd9\u51e0\u79cd\u7f16\u7801\u4e92\u76f8\u517c\u5bb9\u7684 ASCII \u7f16\u7801\u4e00\u5b9a\u4e0d\u4f1a\u51fa\u73b0\u4e71\u7801\uff0c\u800c\u4e2d\u6587\u6587\u672c\u5219\u4f1a\u51fa\u73b0\u4e71\u7801\u3002
\u4e0b\u9762\u6211\u4f1a\u4ecb\u7ecd\u51e0\u79cd\u7814\u7a76\u4e71\u7801\u7684\u65b9\u5f0f\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002
"},{"location":"intro/misc-lab1/#vscode","title":"vscode","text":"\u521b\u5efa\u4e00\u4e2a\u6587\u672c\u6587\u4ef6\uff0c\u4f7f\u7528 vscode \u6253\u5f00\uff0c\u5728\u53f3\u4e0b\u89d2\u4f60\u4f1a\u770b\u5230\u6587\u4ef6\u7684\u7f16\u7801\u65b9\u5f0f\uff08\u4e00\u822c\u60c5\u51b5\u4e0b\u9ed8\u8ba4\u4e3a UTF-8\uff09\uff0c\u8bf4\u660e\u6b64\u65f6\u6587\u4ef6\u5b58\u50a8\u7684\u4e8c\u8fdb\u5236\u4e3a UTF-8 \u7f16\u7801\u7684\u5b57\u8282\u6d41\u3002\u8fd9\u65f6\u4f60\u53ef\u4ee5\u70b9\u51fb\u8fd9\u4e2a\u4f4d\u7f6e\uff0c\u9009\u62e9\u201c\u901a\u8fc7\u7f16\u7801\u91cd\u65b0\u6253\u5f00\uff08Reopen with Encoding\uff09\u201d\uff0c\u9009\u62e9 GBK \u7f16\u7801\uff0c\u8fd9\u6837\u4f60\u6240\u770b\u89c1\u7684\u5c31\u662f\u5c06\u539f\u6709\u6587\u4ef6\u5b57\u8282\u6d41\u901a\u8fc7 GBK \u7f16\u7801\u89e3\u6790\u51fa\u6765\u7684\u5b57\u7b26\uff08\u5373\u524d\u9762\u8bf4\u5230\u7684\u7b2c 1 \u79cd\u60c5\u51b5\uff09\uff0c\u4e0d\u51fa\u610f\u5916\u5b83\u5e94\u8be5\u662f\u4e71\u7801\u3002
\u6216\u8bb8\u4f60\u4e5f\u4f1a\u53d1\u73b0\u8fd8\u6709\u4e00\u4e2a\u9009\u9879\u4e3a\u201c\u901a\u8fc7\u7f16\u7801\u4fdd\u5b58\uff08Save with Encoding\uff09\u201d\uff0c\u5b83\u7684\u4f5c\u7528\u5c31\u662f\u5c06\u4f60\u73b0\u5728\u770b\u5230\u7684\u5b57\u7b26\u901a\u8fc7\u5236\u5b9a\u7684\u7f16\u7801\u65b9\u5f0f\u91cd\u65b0\u7f16\u7801\u4e3a\u5b57\u8282\u6d41\uff0c\u7136\u540e\u4fdd\u5b58\u56de\u6587\u4ef6\u4e2d\u3002\u6bd4\u5982\u7ee7\u7eed\u4e0a\u4e00\u6b65\uff0c\u6211\u4eec\u770b\u5230\u4e86\u4e71\u7801\uff0c\u7136\u540e\u9009\u62e9\u901a\u8fc7\u7f16\u7801\u4fdd\u5b58\uff0c\u9009\u62e9 GBK\uff0c\u770b\u8d77\u6765\u6ca1\u6709\u4efb\u4f55\u4e8b\u60c5\u53d1\u751f\u3002\u63a5\u4e0b\u6765\u518d\u9009\u62e9\u901a\u8fc7\u7f16\u7801\u91cd\u65b0\u6253\u5f00\uff0c\u9009\u62e9 UTF-8\uff0c\u4f60\u6216\u8bb8\u4f1a\u89c9\u5f97\u6b64\u65f6\u6062\u590d\u4e86\u6b63\u5e38\uff0c\u4f46\u6709\u4e00\u4e9b\u4f4d\u7f6e\u7684\u5b57\u7b26\u53d8\u6210\u4e86\u5947\u602a\u7684\u7b26\u53f7\uff0c\u8fd9\u79cd\u60c5\u51b5\u5c31\u662f\u524d\u9762\u8bf4\u5230\u7684\u7b2c 5 \u4e2d\u60c5\u51b5\u3002
\u540c\u7406\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u540c\u6837\u7684\u65b9\u5f0f\u7814\u7a76\u5176\u4ed6\u56db\u79cd\u4e71\u7801\u3002
"},{"location":"intro/misc-lab1/#_2","title":"\u89c2\u5bdf\u5341\u516d\u8fdb\u5236","text":"\u524d\u9762\u6211\u4eec\u53ea\u770b\u5230\u4e86\u89e3\u7801\u7684\u7ed3\u679c\uff0c\u800c\u6ca1\u6709\u770b\u5230\u6587\u4ef6\u5b58\u50a8\u5b57\u8282\u6d41\u7684\u5185\u5bb9\u3002\u5c06\u5b57\u8282\u6d41\u548c\u89e3\u7801\u5f97\u5230\u7684\u5b57\u7b26\u5173\u8054\u8d77\u6765\u53ef\u4ee5\u66f4\u597d\u7684\u7406\u89e3\u4e71\u7801\u4ea7\u751f\u7684\u539f\u56e0\u3002\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u5728 vscode \u7684\u57fa\u7840\u4e0a\u518d\u4f7f\u7528\u5341\u516d\u8fdb\u5236\u7f16\u8f91\u5668\u6765\u67e5\u770b\u6587\u4ef6\u6d41\u7684\u5185\u5bb9\uff0c\u8fdb\u884c\u6bd4\u5bf9\u3002
"},{"location":"intro/misc-lab1/#cyberchef","title":"CyberChef","text":"\u6211\u4eec\u8bfe\u4e0a\u63d0\u5230\u4e86\uff0cCyberChef \u7684 Input \u548c Output \u7a97\u683c\u5f88\u6e05\u6670\u5730\u589e\u52a0\u4e86\u5b57\u7b26\u7f16\u7801\u7684\u9009\u9879\uff0c\u56e0\u6b64\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5730\u8fdb\u884c\u7f16\u7801\u7684\u8f6c\u6362\u3002
\u4f46\u662f CyberChef \u4e5f\u5b58\u5728\u4e00\u4e2a\u95ee\u9898\uff0c\u8fd9\u4e2a\u95ee\u9898\u548c\u5904\u7406 UTF-8 \u9519\u8bef\u7f16\u7801\u6709\u5173\uff0c\u5173\u4e8e UTF-8 \u9519\u8bef\u7f16\u7801\u7684\u66f4\u591a\u4fe1\u606f\u540e\u9762\u9a6c\u4e0a\u5c31\u4f1a\u8bf4\u5230\u3002\u8fd9\u662f\u4e00\u4e2a bonus\uff0c\u5982\u679c\u4f60\u80fd\u591f\u7406\u89e3\u4e3a\u4ec0\u4e48 CyberChef \u548c vscode \u9488\u5bf9\u7b2c\u4e8c\u79cd\u60c5\u51b5\u7684\u4e71\u7801\u7ed3\u679c\u4e0d\u4e00\u6837\uff0c\u4f60\u5c06\u5f97\u5230 bonus\u3002
"},{"location":"intro/misc-lab1/#python","title":"python","text":"\u5229\u7528 python \u4e5f\u53ef\u4ee5\u8fdb\u884c\u7f16\u7801\u7684\u8f6c\u6362\uff0c\u8fd9\u91cc\u662f\u4e00\u4e9b\u4f8b\u5b50\uff1a
In [1]: \"\u6d4b\u8bd5\".encode(\"UTF-8\").decode(\"GBK\") # \u7b2c\u4e00\u79cd\u60c5\u51b5\u7684\u4e71\u7801\nOut[1]: '\u5a34\u5b2d\u762f'\nIn [2]: \"\u6d4b\u8bd5\".encode(\"UTF-8\") # \u7528 UTF-8 \u7f16\u7801\u7f16\u7801 \u201c\u6d4b\u8bd5\u201d\nOut[2]: b'\\xe6\\xb5\\x8b\\xe8\\xaf\\x95'\nIn [3]: \"\u5a34\u5b2d\u762f\".encode(\"GBK\") # \u7528 GBK \u7f16\u7801\u7f16\u7801 \u201c\u5a34\u5b2d\u762f\u201d\nOut[3]: b'\\xe6\\xb5\\x8b\\xe8\\xaf\\x95'\nIn [4]: bin(0xe6), bin(0xb5), bin(0x8b) # \u5c06\u5341\u516d\u8fdb\u5236\u8f6c\u6362\u4e3a\u4e8c\u8fdb\u5236\nOut[4]: ('0b11100110', '0b10110101', '0b10001011')\nIn [5]: hex(0b0110_110101_001011) # \u624b\u52a8\u89e3\u7801 UTF-8 \u5f97\u5230 Unicode \u7801\u4f4d\nOut[5]: '0x6d4b'\nIn [6]: \"\\u6d4b\" # \u5c06 Unicode \u7801\u4f4d\u8f6c\u6362\u4e3a\u5b57\u7b26\nOut[6]: '\u6d4b'\n
"},{"location":"intro/misc-lab1/#utf-8","title":"UTF-8 \u89e3\u7801\u9519\u8bef","text":"\u6211\u4eec\u8bfe\u4e0a\u8bb2\u5230\u4e86 Latin-1 \u7f16\u7801\u53ef\u4ee5\u89e3\u7801\u4efb\u610f\u5b57\u8282\u6d41\uff0c\u4f46 UTF-8 \u4e0d\u80fd\uff0c\u5b83\u7684\u7f16\u7801\u60c5\u51b5\u53ea\u6709\u4ee5\u4e0b\u56db\u79cd\uff1a
\u6240\u4ee5\u5982\u679c\u4e00\u4e2a\u5b57\u7b26\u5f00\u5934\u5c31\u51fa\u73b0\u4e86 10xxxxxx \u8fd9\u6837\u7684\u5b57\u8282\uff0cUTF-8 \u5c31\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u89e3\u7801\u4e86\u3002\u5176\u4ed6\u60c5\u51b5\u4e5f\u4f1a\u5f15\u8d77 UTF-8 \u89e3\u7801\u9519\u8bef\u3002
Python \u5904\u7406\u8fd9\u79cd\u9519\u8bef\u7684\u9ed8\u8ba4\u65b9\u6cd5\u662f\u76f4\u63a5\u629b\u51fa UnicodeDecodeError\uff0c\u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u662f\u4e0d\u65b9\u4fbf\u7684\uff0c\u6240\u4ee5\u4e00\u822c\u60c5\u51b5\u7684\u5904\u7406\u65b9\u5f0f\u662f\u9488\u5bf9\u9519\u8bef\u7684\u5b57\u8282\u6d41\u8fdb\u884c\u66ff\u6362\uff0c\u6bd4\u5982\u5c06\u9519\u8bef\u7684\u5b57\u8282\u6d41\u66ff\u6362\u4e3a U+FFFD\uff08\u5373 \ufffd\uff09\uff0c\u8fd9\u4e5f\u662f\u4e00\u4e9b\u53e4\u602a\u4e71\u7801\u7684\u6765\u6e90\u4e4b\u4e00\u3002
\u524d\u9762\u63d0\u5230\u4e86 CyberChef \u5e76\u6ca1\u6709\u91c7\u7528\u8fd9\u79cd\u5904\u7406\u65b9\u5f0f\uff0c\u5b83\u5c06\u9519\u8bef\u7684\u5b57\u8282\u4e5f\u89e3\u7801\u4e3a\u4e86\u5176\u4ed6\u5947\u602a\u7684\u5b57\u7b26\uff0c\u8bf7\u4f60\u7814\u7a76\u5176\u4e2d\u7684\u539f\u7406\uff0c\u8fd9\u662f\u4e00\u4e2a bonus\u3002
"},{"location":"intro/misc-lab1/#task","title":"Task","text":"\u90a3\u4e48\u603b\u7ed3\u4e00\u4e0b\u4f60\u9700\u8981\u505a\u7684\u4e8b\u60c5\uff1a
\u6211\u4eec\u8bfe\u4e0a\u4ecb\u7ecd\u4e86\u7ef4\u5409\u5c3c\u4e9a\uff08Vigenere\uff09\u5bc6\u7801\uff0c\u8bb0\u660e\u6587\u4e3a \\(\\mathbf{P}\\)\u3001\u5bc6\u6587\u4e3a \\(\\mathbf{C}\\)\u3001\u5bc6\u94a5\u4e3a \\(\\mathbf{k}\\)\uff0c\u5176\u52a0\u89e3\u5bc6\u65b9\u5f0f\u4e3a\uff1a
\u8fd9\u91cc\u6211\u4eec\u5c06\u5176\u8fdb\u884c\u6269\u5c55\uff0c\u5c06\u5b57\u7b26\u96c6\u4ece 26 \u4e2a\u5b57\u6bcd\u6269\u5c55\u5230 97 \u4e2a\u5b57\u7b26\uff0c\u5e76\u5c06\u52a0\u6cd5\u5bc6\u7801\u6539\u4e3a\u4e58\u6cd5\u5bc6\u7801\uff0c\u5373\uff1a
\u7ef4\u5409\u5c3c\u4e9a\u5bc6\u7801\u7684\u7834\u89e3\u65b9\u6cd5\u6211\u4eec\u5728\u8bfe\u4e0a\u4e5f\u6709\u4ecb\u7ecd\u8fc7\uff0c\u57fa\u672c\u5206\u4e3a\u51e0\u6b65\uff1a
\u800c\u6211\u4eec\u6269\u5c55\u540e\u7684\u7ef4\u5409\u5c3c\u4e9a\u5bc6\u7801\u7684\u7834\u89e3\u65b9\u6cd5\u4e5f\u7c7b\u4f3c\uff0c\u901a\u8fc7\u4f60\u559c\u6b22\u7684\u8bed\u8a00\u5b9e\u73b0\u5373\u53ef\u3002\uff08\u63a8\u8350 python\uff0c\u4ee5\u53ca\u6709\u4e86\u81ea\u52a8\u5316\u65b9\u5f0f\u5c31\u4e0d\u8981\u809d\u624b\u63a8\u5566\uff09
"},{"location":"intro/misc-lab1/#task_1","title":"Task","text":"\u6211\u4eec\u9009\u53d6\u4e86\u4e00\u4efd TOEFL \u9605\u8bfb\u6587\u7ae0\uff0c\u968f\u673a\u751f\u6210\u4e86 15-30 \u4e2a\u5b57\u7b26\u957f\u5ea6\u7684\u5bc6\u94a5\uff0c\u5e76\u5bf9\u5176\u8fdb\u884c\u4e86\u52a0\u5bc6\uff0c\u73b0\u5c06\u5bc6\u6587\u63d0\u4f9b\u7ed9\u4f60\uff0c\u4e3a\u4e86\u660e\u786e\u52a0\u5bc6\u65b9\u6cd5\u4ee5\u53ca\u7b80\u5355\u719f\u6089 python \u4f7f\u7528\uff0c\u6211\u4eec\u8fd8\u63d0\u4f9b\u4e86\u52a0\u5bc6\u4ee3\u7801\uff0c\u8bf7\u4f60\u5b9e\u73b0\u5bf9\u4e8e\u5bc6\u6587\u7684\u7834\u89e3\uff08flag \u5939\u5728\u4e86\u660e\u6587\u4e2d\u95f4\uff09\u3002
\u9644\u4ef6\uff1aencrypt.py\u3001cipher.txt\u3002
\u8fd9\u9053\u9898\u76ee\u4e5f\u662f\u6821\u5df4\u4e2d\u7684\u4e00\u9053\u9898\u76ee\uff0c\u9644\u4ef6\u4e5f\u662f\u5b8c\u5168\u4e00\u81f4\u7684\uff08\u9664\u4e86\u4e00\u4e9b\u4ee3\u7801\u683c\u5f0f\u66f4\u6539\uff09\uff0c\u539f\u9898\u94fe\u63a5\u4e3a https://zjusec.com/challenges/31\u3002
\u8bf7\u5b9e\u73b0\u5bf9\u7ed9\u5b9a\u5bc6\u6587\u7684\u7834\u89e3\uff0c\u62ff\u5230\u5176\u4e2d\u7684 flag\uff0c\u63d0\u4ea4\u5230\u6821\u5df4\u9898\u76ee\u4e2d\u8fdb\u884c\u9a8c\u8bc1\u3002\u5b9e\u9a8c\u62a5\u544a\u4e2d\u9700\u8981\u5305\u542b\u4f60\u7684\u89e3\u9898\u601d\u8def\u3001\u5b8c\u6574\u89e3\u9898\u4ee3\u7801\u4ee5\u53ca flag\u3002
\u5982\u679c\u65e0\u6cd5\u5b8c\u6574\u5b8c\u6210\u89e3\u5bc6\uff0c\u4e5f\u8bf7\u5c06\u4f60\u7684\u5c1d\u8bd5\u5199\u5728\u62a5\u544a\u4e2d\uff0c\u6211\u4eec\u4f1a\u6839\u636e\u5b8c\u6210\u60c5\u51b5\u7ed9\u90e8\u5206\u5206\u3002
"},{"location":"intro/misc-lab1/#challenge-2","title":"Challenge 2","text":"\u9009\u505a\u6b64\u9898\u76ee\u9700\u8981\u540c\u65f6\u5b8c\u6210\u4ee5\u4e0b\u4e24\u4e2a\u4efb\u52a1\u3002
"},{"location":"intro/misc-lab1/#task-1-tonycranes-easy-osint","title":"Task 1: TonyCrane's easy OSINT","text":"\u8fd9\u662f TonyCrane \u5728\u65e5\u672c\u62cd\u7684\u4e00\u5f20\u7167\u7247\uff08\u8bf7\u4e0b\u8f7d\u56fe\u7247\u540e\u505a\u9898\uff09\uff1a
\u8bf7\u4f60\u56de\u7b54\u4ee5\u4e0b\u4e24\u4e2a\u95ee\u9898\uff1a
\u5c06\u4f60\u7684\u7b54\u6848\u4ee5\u53ca\u89e3\u9898\u601d\u8def\u5199\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u3002\u540c\u6837\uff0c\u6ca1\u6709\u5b8c\u5168\u505a\u51fa\u6765\u4e5f\u53ef\u4ee5\u5199\u51fa\u4f60\u7684\u601d\u8003\uff0c\u6211\u4eec\u4e5f\u4f1a\u8003\u8651\u7ed9\u51fa\u90e8\u5206\u5206\u3002
"},{"location":"intro/misc-lab1/#task-2-yyys-real-osint","title":"Task 2: yyy's real OSINT","text":"\u8fd9\u662f yyy \u7528\u624b\u673a\u62cd\u7684\u4e00\u5f20\u7167\u7247\uff08\u8bf7\u4e0b\u8f7d\u56fe\u7247\u540e\u505a\u9898\uff09\uff1a
\u8bf7\u56de\u7b54\u4ee5\u4e0b\u4e24\u4e2a\u95ee\u9898\uff1a
\u8bf7\u901a\u8fc7 http://nc.tonycrane.cc:65111/ \u8fdb\u884c\u56de\u7b54\u5e76\u9a8c\u8bc1\uff08\u8bf7\u4e0d\u8981\u8fdb\u884c\u4efb\u4f55\u5f62\u5f0f\u7684\u7206\u7834\u7b54\u6848\uff09\uff0c\u663e\u793a flag \u5373\u4e3a\u56de\u7b54\u6b63\u786e\u3002\u5c06\u4f60\u7684\u7ed3\u679c\u3001\u56de\u7b54\u622a\u5c4f\u4ee5\u53ca\u89e3\u9898\u601d\u8def\u5199\u5728\u5b9e\u9a8c\u62a5\u544a\u4e2d\u3002\u540c\u6837\uff0c\u6ca1\u6709\u5b8c\u5168\u505a\u51fa\u6765\u4e5f\u53ef\u4ee5\u5199\u51fa\u4f60\u7684\u601d\u8003\uff0c\u6211\u4eec\u4e5f\u4f1a\u8003\u8651\u7ed9\u51fa\u90e8\u5206\u5206\u3002
"},{"location":"intro/pwn-lab1/","title":"Pwn Lab 1: Code Injection","text":"\u672c\u8282 Lab \u7531\u4ee5\u4e0b\u4e24\u90e8\u5206\u7ec4\u6210\uff1a
\u8bfe\u4e0a\u4f5c\u4e3a\u5f15\u5b50\u7684 hello
\u8d5b\u9898\uff0c\u8bf7\u901a\u8fc7\u5176\u719f\u6089 pwntools \u7684\u4f7f\u7528\uff0c\u5e76\u5b8c\u6210\u653b\u51fb\u8fdc\u7a0b\uff0c\u53d6\u5f97 flag1 (15 points) \u4e0e flag2 (points)
116.62.247.145
, Port: 10100
\u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u6f0f\u6d1e\u5206\u6790\u4ee5\u53ca\u505a\u6cd5\uff0c\u7ed9\u51fa\u6210\u529f\u62ff\u5230 flag \u7684\u622a\u56fe\uff0c\u5e76\u5c06\u653b\u51fb\u4ee3\u7801\u4ee5\u9644\u4ef6\u5f62\u5f0f\u4e0a\u4f20
"},{"location":"intro/pwn-lab1/#task-2-25-points","title":"Task 2 (25 points)","text":"\u8bfe\u4e0a\u8bb2\u89e3\u7684 injection1
\u8d5b\u9898\uff0c\u8bf7\u9006\u5411\u5206\u6790\u7a0b\u5e8f\uff0c\u5e76\u5b9e\u73b0\u5bf9\u5176\u4e2dCode Injection\u6f0f\u6d1e\u7684\u653b\u51fb\uff0c\u53d6\u5f97\u4f4d\u4e8e\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u7684 flag (25 points)
116.62.247.145
, Port: 10101
\u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u6f0f\u6d1e\u5206\u6790\u4ee5\u53ca\u505a\u6cd5\uff0c\u7ed9\u51fa\u6210\u529f\u62ff\u5230 flag \u7684\u622a\u56fe\uff0c\u5e76\u5c06\u653b\u51fb\u4ee3\u7801\u4ee5\u9644\u4ef6\u5f62\u5f0f\u4e0a\u4f20
\u6ce8\uff1a\u8def\u5f84\u7a7f\u8d8a\u4e0d\u7ed9\u5206\u54e6 :-)
"},{"location":"intro/pwn-lab1/#task-3-25-points","title":"Task 3 (25 points)","text":"\u8bfe\u4e0a\u8bb2\u89e3\u7684 injection2
\u8d5b\u9898\uff0c\u8bf7\u5b9e\u73b0
delegate
\u4ee3\u7801\uff0c\u5b8c\u6210\u540e\u53d6\u5f97 FLAG (10 points)116.62.247.145
, Port: 10102
\u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u6f0f\u6d1e\u5206\u6790\u4ee5\u53ca\u505a\u6cd5\uff0c\u7ed9\u51fa\u5bf9\u4e8e\u4f60\u4f7f\u7528\u7684 shellcode \u4ee3\u7801\u7684\u5206\u6790\uff08\u8fd9\u4e2a\u4ee3\u7801\u5230\u5e95\u5e72\u4e86\u5565\uff09\uff0c\u7ed9\u51fa\u6210\u529f\u62ff\u5230 flag \u7684\u622a\u56fe\uff0c\u5e76\u5c06\u653b\u51fb\u4ee3\u7801\u4ee5\u9644\u4ef6\u5f62\u5f0f\u4e0a\u4f20
"},{"location":"intro/pwn-lab1/#task-4-20-points","title":"Task 4 (20 points)","text":"\u4f4d\u4e8e\u6821\u5df4\u7684\u201c\u8d85\u8001\u201d shellcode \u8d5b\u9898\uff0c\u5728\u5b8c\u6210\u4ee5\u4e0a\u7684\u57fa\u7840\u540e\uff0c\u505a\u5b83\u4e00\u5b9a\u662f\u780d\u74dc\u5207\u83dc
\u6ce8\uff1a\u8fd9\u4e2a\u9898\u662f 32 \u4f4d\u67b6\u6784\u7684 shellcode \u54e6\uff0c\u4e0d\u8981\u5f04\u9519\u4e86
\u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u6f0f\u6d1e\u5206\u6790\u4ee5\u53ca\u505a\u6cd5\uff0c\u7ed9\u51fa\u6210\u529f\u62ff\u5230 flag \u7684\u622a\u56fe\uff0c\u5e76\u5c06\u653b\u51fb\u4ee3\u7801\u4ee5\u9644\u4ef6\u5f62\u5f0f\u4e0a\u4f20
"},{"location":"intro/pwn-lab1/#bonus-extra-20-points","title":"Bonus (extra 20 points)","text":"\u5728 Task 3 \u7684\u57fa\u7840\u4e0a\uff0cinjection3
\u8d5b\u9898\u5bf9\u4e8e\u8f93\u5165\u7684\u4ee3\u7801\u505a\u4e86\u4e00\u4e9b\u9650\u5236\uff0c\u4f60\u8fd8\u80fd\u6210\u529f\u653b\u51fb\u4e48\uff1f\u8bf7\u5b8c\u6210
injection3
\u548c injection2
\u7684\u4e0d\u540c\uff0c\u5b9e\u73b0\u4e86\u600e\u6837\u7684\u68c0\u67e5\uff1f(5 points)116.62.247.145
, Port: 10103
\u8bf7\u5728\u62a5\u544a\u4e2d\u7ed9\u51fa\u4f60\u7684\u5206\u6790\u7ed3\u679c\uff0c\u5e76\u9644\u4e0a\u6f0f\u6d1e\u5206\u6790\u4ee5\u53ca\u505a\u6cd5\uff0c\u7ed9\u51fa\u6210\u529f\u62ff\u5230 flag \u7684\u622a\u56fe\uff0c\u5e76\u5c06\u653b\u51fb\u4ee3\u7801\u4ee5\u9644\u4ef6\u5f62\u5f0f\u4e0a\u4f20
"},{"location":"intro/rev-lab1/","title":"Rev Lab 1: Baby Reverse","text":"\u672c\u8282 Lab \u7531\u4ee5\u4e0b\u4e24\u90e8\u5206\u7ec4\u6210\uff1a
\u9898\u76ee\u4e0b\u8f7d\u94fe\u63a5
\u8bfe\u4e0a\u4f5c\u4e3a\u7ec3\u4e60\u7684 practice
\u8d5b\u9898\uff0c\u8bf7\u56de\u987e\u8bfe\u4e0a\u8bb2\u89e3\u7684\u5185\u5bb9\uff0c\u5b8c\u6210\u9898\u76ee\u5e76\u56de\u7b54\u8bfe\u4e0a\u63d0\u51fa\u7684 5 \u4e2a\u95ee\u9898\uff1a
\u9898\u76ee\u4e0b\u8f7d\u94fe\u63a5
\u5728 practice
\u8d5b\u9898\u7684\u57fa\u7840\u4e0a\uff0c\u8be5\u9898\u76ee\u7a0d\u6709\u4fee\u6539\uff0c\u8bf7\u4f60\u7a0d\u52a0\u63a2\u7d22\u5b8c\u6210\u9898\u76ee\u5e76\u56de\u7b54\u4ee5\u4e0b\u95ee\u9898\uff1a
\u9898\u76ee\u4e0b\u8f7d\u94fe\u63a5
\u770b\u4f3c\u968f\u673a\u5374\u5e76\u4e0d\u968f\u673a\uff0c\u770b\u4f3c\u6a21\u7cca\u5374\u53c8\u6e05\u6670\uff0c\u8bf7\u4f60\u8010\u5fc3\u5206\u6790\u5e76\u63d0\u4ea4\uff1a
\u6211\u4eec\u5728\u53d1\u5e03\u7684\u865a\u62df\u673a
\u4e0b\u8f7d\u94fe\u63a5\uff08\u5176\u4e2d\u7528\u6237\u540d\u4e3a ctfer\uff0c\u5bc6\u7801\u4e3a aaa\uff09
\u4e2d\u9884\u88c5\u4e86\u4e00\u4e9b\u8bfe\u7a0b\u4e2d\u53ef\u80fd\u4f1a\u4f7f\u7528\u5230\u7684\u5de5\u5177\uff0c\u8fd9\u91cc\u5c06\u5bf9\u5176\u8fdb\u884c\u5c55\u5f00\u4ecb\u7ecd\u3002\u540c\u5b66\u4eec\u4e5f\u53ef\u4ee5\u6839\u636e\u81ea\u8eab\u9700\u8981\uff0c\u5728\u719f\u6089\u7684\u5e73\u53f0\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u5de5\u5177\u3002
"},{"location":"intro/tools/#ida","title":"IDA","text":"New
\u9009\u62e9\u4e8c\u8fdb\u5236\u7a0b\u5e8f\u8fdb\u884c\u53cd\u7f16\u8bd1\u5907\u6ce8\uff1a\u9884\u88c5\u7684 IDA \u662f\u9700\u8981\u8054\u7f51\u4f7f\u7528\u7684\u514d\u8d39\u8bd5\u7528\u7248\uff0c\u5982\u679c\u5b89\u88c5\u5176\u4ed6\u6e20\u9053\u4e0b\u8f7d\u5230\u7684\u7834\u89e3\u7248\uff0c\u8bf7\u6ce8\u610f\u907f\u514d\u4e2d\u6587\u8def\u5f84\u95ee\u9898\u3002
"},{"location":"intro/tools/#ssl-server-not-avaliable","title":"\u89e3\u51b3 SSL \u7248\u672c\u8fc7\u9ad8\u5bfc\u81f4\u7684 server not avaliable","text":"\u7531\u4e8e\u9ad8\u7248\u672c ubuntu \u4f7f\u7528\u7684\u662f SSL3+ \u7684\u7248\u672c\uff0c\u5728 IDA \u4e0e\u8fdc\u7aef server \u4f7f\u7528\u65f6\u53ef\u80fd\u4f1a\u51fa\u95ee\u9898\uff0c\u5982\u679c\u4f60\u9047\u5230\u4e86 cloud server not avaliable
\u7684\u95ee\u9898\uff0c\u5176\u5173\u952e\u539f\u56e0\u662f SSL3+ \u62ff\u6389\u4e86 SSL_get_peer_certificate
\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u89c1\u94fe\u63a5\uff08\u53c8\u662f\u4e0d\u5411\u524d\u517c\u5bb9\u7684\u8bbe\u8ba1\uff09
\u4e3a\u4e86\u4fee\u590d\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u65e7\u7248\u672c SSL1.1 \u66ff\u6362\u76ee\u524d\u73af\u5883\u7684 SSL3+\uff0c\u8bf7\u4e0b\u8f7d\u4fee\u590d\u9644\u4ef6\uff0c\u89e3\u538b\u7f29\u540e\u5728\u76ee\u6807\u76ee\u5f55\u6267\u884c fix.sh
\u811a\u672c\uff08\u53ef\u80fd\u9700\u8981 sudo
\u6743\u9650\uff09\uff0c\u5b8c\u6210\u540e\u518d\u6b21\u6d4b\u8bd5 IDA \u5e94\u8be5\u5c31\u53ef\u4ee5\u6b63\u5e38\u901a\u8fc7 cloud server \u8fdb\u884c F5 \u4e86
~/Tools/ghidra_10.3_PUBLIC/ghidraRun
\u811a\u672c\u5373\u53ef\u542f\u52a8\uff0c\u6548\u679c\u5982\u4e0b\u56fe\uff0c\u4f7f\u7528\u7684\u6559\u7a0b\u53ef\u4ee5\u627e\u7f51\u4e0a\u7684\u76f8\u5173\u535a\u5ba2\uff0c\u5982\u8fd9\u4e00\u7bc7gdb
\u5373\u53ef\u4ee5\u770b\u5230\u63d2\u4ef6\u6548\u679c\u2026\u2026
\u9664\u6b64\u5916\u8fd8\u6709\u4e00\u4e9b\u989d\u5916\u7684\u5de5\u5177\uff0c\u8fd9\u4e9b\u5de5\u5177\u4f1a\u540e\u7eed\u8865\u5145\u4ecb\u7ecd\uff0c\u6216\u5728\u8bfe\u7a0b\u4f7f\u7528\u65f6\u4f1a\u989d\u5916\u7ed9\u51fa\u8bb2\u89e3\u3002
"},{"location":"intro/web-lab1/","title":"Web Lab 1","text":""},{"location":"intro/web-lab1/#task-1-70","title":"Task 1 (70%)","text":"Implement a DNS rebinder:
Finish the challenge SSRF in SchoolBus (https://zjusec.com/challenges/47)
(Using the rebinder in Task 1 is not required)
"},{"location":"intro/web-lab1/#what-to-submit","title":"What to submit","text":"For task 1, code with comments (or additional docs) and a running demo.
For task 2, your writeup.
PDF is recommended.
"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..3bc7faf --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,38 @@ + +