Hackergame 赛前动员会.pdf
Hackergame 2020 赛前动员 10 ⽉ 30 ⽇(星期五)晚 19:00 ⻄区第三教学楼 3C104 Jiyan He @ LUG, NEBULA Oct. 2020 Outline • Hackergame • How to search • web: Web • math: Crypto & Math • binary: Reverse & Pwn • general: General Skills Hackergame • 中国科学技术⼤学第七届信息安全⼤赛 • ⽐赛时间:北京时间 2020 年 10 ⽉ 31 ⽇ 中午 12:00 ~ 11 ⽉ 7 ⽇ 中午 12:00(共七天) • ⽐赛地址:hack.lug.ustc.edu.cn • Hackergame • 主办单位 • 中国科学技术⼤学⽹络空间安全学院 • 中国科学技术⼤学校团委 • 中国科学技术⼤学校管指委 • 承办单位 • 中国科学技术⼤学学⽣ Linux ⽤户协会(USTC LUG) • 中国科学技术⼤学微软学⽣俱乐部(USTC MSC) • 中国科学技术⼤学 NEBULA 战队(USTC NEBULA) • 中国科学技术⼤学信息安全俱乐部 Hackergame • 协办单位 • 浙江⼤学 AAA 战队 • 哈尔滨⼯业⼤学 Linux 开源学⽣俱乐部 • 哈尔滨⼯业⼤学紫丁⾹ CTF 俱乐部 • ⻄安交通⼤学微软学⽣俱乐部 • ⻄安交通⼤学 0w1 ⽹络安全俱乐部 • 重庆⼤学微软学⽣俱乐部 • 北京邮电⼤学微软学⽣俱乐部 • 吉林⼤学⽹络信息安全协会 • 东北⼤学先锋⽹络中⼼ • 南京航空航天⼤学微软学⽣俱乐部 • 南京航空航天⼤学 Asuri 战队 Hackergame • 赛制说明 • 个⼈线上⽐赛,解题模式,约 25 道题⽬,有实时排⾏ 榜; • 所有题⽬同时放出,每道题⽬之间相对独⽴; • 题⽬的答案称为 flag,flag 在选⼿执⾏命令 / 逆向出程序 的逻辑 / 发现隐藏在⽂件中的信息 / 攻击⽬标程序成功 / 完成指定任务 等后出现,答案的格式⼀般为 flag{...}。 Hackergame • ⽐赛题⽬分为 4 类,分类如下: • 综合技能(general) • 程序逆向与漏洞利⽤(binary) • 密码学与数学(math) • ⽹站安全(web) Hackergame • 0. 选⼿应该只针对特定⽹站、特定端⼝进⾏合理测试,不应该攻击⽐赛平台(即本 ⽹站),做题过程中不应该恶意扫描爆破、恶意占⽤资源等; • 1. 该⽐赛为个⼈线上赛,⽐赛完全结束前,选⼿应该⽤⾃⼰的账号查看题⽬、提交 答案,不应该使⽤虚假身份创建账号,不应该和他⼈(包括但不限于同学,队友 等)合作,讨论题⽬的解法、提示和答案等; • 2. ⽐赛完全结束前,包括但不限于通过任何⼿段公布解法、提示或答案,向他⼈索 取解法、提示或答案等⾏为均属于作弊⾏为; • 3. 我们给予参赛选⼿极⾼的信任,但组委会有权通过其他证据判定选⼿的作弊⾏ 为,取消涉及作弊⾏为的所有选⼿的参赛资格并予以公示; • 4. 如果选⼿发现⽐赛作弊现象,⽆论该作弊⾏为是出于何种⽬的,选⼿都应该拒绝 加⼊并且告知组委会; Hackergame • 奖项设置: • ⼀等奖(⼀名) • ⼆等奖(五名) • 三等奖(⼆⼗五名) • 特别奖项: • 新⽣特别奖(两名,仅限本科⼤⼀新⽣) • 每道题⽬⼀⾎奖(有⼩题的题⽬,以全部完成计)只颁发证书,不送出奖品 • 分类奖项(4 个分类,每个分类⼀名)只颁发证书,不送出奖品 Hackergame Hackergame Web • HTTP 协议 • 源代码 • 动态脚本 • Cookie • DOM • Javascript Web • HTTP 协议 • method : GET POST … • URL: /index.php • version: 1.1 • headers: Host, Cookie, User-Agent … • body Web Web Web Web • 服务器端动态脚本 • Python • PHP • 接受⽤户在 HTTP 协议中传来的信息 • 常⻅的:登录,查询,记录…… • 动态⽣成⽹⻚代码,并设置⼀些状态 • 返回并记录登录情况(Cookie) • 返回查询的内容 Web • 服务器端动态脚本 • 可能存在的问题: • 绕过登录凭证的检查 • 构造特定的参数使程序返回敏感信息 • 命令注⼊ / SQL 注⼊等和外部组件交互的问题 • 由于编程 BUG 本身的问题 Web • 客户端(浏览器)脚本 • Javascript • 动态修改⽹⻚内的内容 • 做⼀些提交前的检查 • 不刷新的情况下就能获得新的内容 Web • ⼀些技能(均在 Chrome 下完成) • 查看和修改 Cookie • 查看和编辑⽹⻚源代码 • 查看和调试 Javascript Web • ⼀些编码⽅式 • Base64:binary to text • 可以很⽅便的编码和解码 • ⽅便传输(只含⾁眼可⻅的 ASCII 字符) • 通常⻓这个样⼦: • exciting -> ZXhjaXRpbmc= • I’m angry! -> SSdtIGFuZ3J5IQ== Web • CTF 中 Web 的⼀些常⻅操作: • 是否有敏感的信息泄漏 • 如: git 会在⼯作⽬录创建⼀个 .git ⽂件夹,如果不慎 将该⽬录作为⽹站的⽬录,就可能导致源代码泄漏。 (如今在 Python ⽹站中已经⼏乎不存在) • ⼀些静态资源如:⽂档、JS 代码、压缩包等泄漏 • 其他很多软件也存在这个问题 Web • 演示:如何调试⼀段 JS 代码 Crypto • Hash 算法 • 可以认为:不可逆(Hash -> 原⽂) • 常⻅的 Hash 算法:MD5 / SHA-1 / SHA-256 • 常被⽤于:检验 / 作为唯⼀编号…… Crypto • 对称加密:加密解密⽤同样的信息 • 古典密码学 • 凯撒密码 • Vigenère 密码 • 简单加密 • 异或⼀个值,再异或⼀次解密 • 常⻅的对称加密算法: • AES Crypto • ⾮对称加密:加密解密⽤不同的信息 • ⼀对密钥: • 公钥:谁都可以知道,⽤于加密 • 私钥:只有⾃⼰知道,⽤于解密 • 常⻅的算法: • RSA (在⽣活中⾮常普遍) Reverse • 编译:源代码(代码逻辑) -> 可执⾏⽂件 • 逆向:可执⾏⽂件 -> 代码逻辑 • 通过逆向我们可以: • 明⽩程序的逻辑 • 得到其中的敏感信息 • 修改程序的逻辑 • …… Reverse • 常⽤⼯具: • IDA + F5 插件 • IDA + F5 插件 • IDA + F5 插件 Reverse • 演示:IDA 逆向⼀个⼩⼩的程序 Pwn • SSH (Secure Shell) • ⽤于远程登录服务器 • ssh hejiyan@202.xxx.xxx.xxx • NC (netcat) • ⽤于读写 TCP 与 UDP 端⼝ • https://lug.ustc.edu.cn/planet/2019/09/how-to-use-nc/ Misc • Steganography • 将信息隐藏在⽂件(图⽚、⾳频、程序)中 • 常⻅的图⽚隐写⼿段: • LSB:修改每个像素点 RGB 值的最低位 • 将信息隐藏在频域 • ⼀些编程题⽬ • 可能需要使⽤ C 或 Python 等编程语⾔写⼀些代码 Have fun! Q&A

Hackergame 赛前动员会.pdf 




