关于第二届网鼎杯中一些题目的小心思
本文最后更新于1510天前,其中的信息可能已经有所发展或是发生改变。

4个签到题

4个签到题都是改编自一些经典小游戏,获取flag2种途径,第一种是顺利通关即可获取(青龙、玄武组的多了一个阻碍,就是flag不直接显示出来,需要按f12打开开发者工具,在console处才可以看到flag)。第二种则是查看源代码,着重查看js代码,发现都有ajax发包(同样的,青龙、玄武组的代码多了一些混淆),只要仿照发包即可获取flag值。
  

 虚幻2 

汉信码是一种全新的二维矩阵码,由中国物品编码中心牵头组织相关单位合作开发,完全具有自主知识产权。和国际上其他二维条码相比,更适合汉字信息的表示,而且可以容纳更多的信息。
出题人对汉信码情有独钟,于是推出2年前“虚幻”一题的plus版,一开始只把3个像素压缩成一个,但是想想又太简单,于是就增加了一些旋转,补全的操作。
还原到最后一步:
这里虽然缺少了一块,但是可以尝试“暴力修补”,也可以乱涂鸦:
本题主要是让大家了解汉信码的编码规则,修复汉信码。
 

easy_ya 

在安全学领域,TEATiny Encryption Algorithm)是一种分组加密算法,它的实现非常简单。本题是基于tea算法简化版的,很容易可以破解出来,题目中的key隐藏了一个彩蛋:

3个faster题目

 
漏洞挖掘是在二进制程序分析领域一个经久不衰的关键问题。常用的漏洞挖掘技术包括模型检测、模糊测试、符号执行、二进制比对等,这些传统的漏洞挖掘技术在理论研究上已经比较成熟,其中大部分的技术如模糊测试、符号执行等都已基本实现自动化,可以在不需要或较少的人工干预的前提下,挖掘被测试程序中的漏洞。
faster题目主要考察自动化漏洞挖掘技术,题目设计了一个简单的N层函数嵌套互相调用,每次nc连接都会生成不同程序,并限制了连接时间,迫使选手使用自动化利用工具来对该程序进行自动化分析利用。三个faster题目的层次分别是100层、1000层、10000层。
对于此类题目,符号执行技术是一个行之有效的方法。符号执行技术,能有效解决模糊测试冗余测试用例过多导致的代码覆盖率增长慢的问题,已经被学术和工业界应用在漏洞挖掘领域。
 

Teslaaaaa

本题是汽车使用Flash over CAN的方法刷新ECU程序的经典场景。需要学习理解UDS诊断协议(ISO 15765-2 ISO 14229-1),将4S店给车辆刷新ECU程序时的CAN通信日志中提取出二进制程序,并逆向出其中的flag
日志中报文长度都为8字节,参考ISO15765-2,可以将日志中的每条报文进行分类,分为单帧,首帧,连续帧和流控帧单帧报文可以发送1 ~ 7字节的数据载荷。7字节以上的数据载荷需要拆分为一个首帧和多个连续帧组合。根据N_PCI可以知道第一条为首帧,第二帧为连续帧,一共有11字节的数据。流控帧没有数据载荷,一般用于准备接收长帧时,由接收方告知发送方的接收能力。
根据上面的规律,可以提取出所有的有效数据,参考ISO14229-1中,重点关注和刷新相关的服务0x34请求下载、0x36数据传输、0x37退出传输。
最后还原得到ECU的程序文件,是一个ARM芯片二进制程序,程序本身并不复杂,直接逆向出flag即可。
 

未完成的书

文言(wenyan-lang)是一门采用文言文输入的具有图灵完备的编程语言,该语言不使用英文字符,仅包含繁体中文字符,并保留繁体引号「」。
这题花费了出题人3个星期的夜晚时间,最后出题人自己都被这本书绕晕了,同时由于设计之初存在一个非预期,导致可能存在的多解,但是已经快要制作完了,并且没有保存最开始的副本,没办法还原回去了,就只能给出flag的一个哈希值,但是不影响解题的。题目是rsa winner attack2个变种base64加一些奇怪操作组成的。因为wenyan-lang主要是js的翻译,所以就想着能不能用文言文重新描述一遍jsrsa过程,不过到最后也没有重写完成,所以可能会看到代码里有部分奇怪的地方。该题目是要求我们的输入经过层层变换,最后与一个歌词一样。因为当时中了《庆余年》片头曲《一念一生》的毒了,反复听了几天这个歌。

密码柜

  

Vivd

 CVE-2019-18683linux v4l2子系统上的一个竞争漏洞,潜伏时间长达5年,影响vivid驱动,最终造成UAF,有可能可以做本地提权。
本来这个题目是一个用户态和内核态pwn结合的题目,后面经过修修改改,就成了这样了。本题旨在让选手学习一下,真实CVECVE-2019-18683)内核提权的另一个思路,通用堆喷的一些技巧等。
预计解出时间在5-6小时,但实际情况比预期的长。其实,因为本题没设置什么保护,所以可以通过读/proc/kallsyms来找到函数地址,然后通过调试结构体,在你自己预先编译的内核中导出符号表,加以利用。
 

小明的bb86

量子密码体系采用量子态作为信息载体,经由量子通道在合法的用户之间传送密钥。量子密码的安全性由量子力学原理所保证。
本题基于X-NUCA2018unconditional_security的量子密码,尝试模拟量子通信,选手可以选择监听或者放行,监听之后量子会发生偏转导致最后的结果出现问题。本题的缺陷在于每次传输的模态都相同,导致模态泄露。
 

supersafe_vm

Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似,但是设计者想要在保证性能的同时提供更好的内存安全。
本题涉及了Rust逆向和lc3架构的漏洞识别,随着Rust的推广,未来此类pwn题会越来越多。
 

APL2

 APL语言是一种表达能力很强的会话语言。应用范围包括数学统计、事务经营、信息检索、报表生成、财务预算等。它也可用于模拟计划管理、图形处理、正文编辑、计算机辅助教学等方面。APL的特点是,语法规则简单,运算符丰富,表达式简练,并包含多种构造和处理数据的运算符。它在数据加工和矩阵计算上特别有效,不过程序员具有较高的数学素养。
本题其实是一个SM4apl代码实现,出题人发现使用apl居然能做到比cpython都短的SM4代码设计,而且看着也很舒(zi)(lian),然后把大部分函数部分都合并了,所以才导致的看起来很臃肿,最后就是用打印机打印出来,拍照呈现给大家。
 

fixit

一个简单的修补复原过程,这里面也藏了一个彩蛋:

点击数:169

    暂无评论

    发送评论 编辑评论

    
    				
    |´・ω・)ノ
    ヾ(≧∇≦*)ゝ
    (☆ω☆)
    (╯‵□′)╯︵┴─┴
     ̄﹃ ̄
    (/ω\)
    ∠( ᐛ 」∠)_
    (๑•̀ㅁ•́ฅ)
    →_→
    ୧(๑•̀⌄•́๑)૭
    ٩(ˊᗜˋ*)و
    (ノ°ο°)ノ
    (´இ皿இ`)
    ⌇●﹏●⌇
    (ฅ´ω`ฅ)
    (╯°A°)╯︵○○○
    φ( ̄∇ ̄o)
    ヾ(´・ ・`。)ノ"
    ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
    (ó﹏ò。)
    Σ(っ °Д °;)っ
    ( ,,´・ω・)ノ"(´っω・`。)
    ╮(╯▽╰)╭
    o(*////▽////*)q
    >﹏<
    ( ๑´•ω•) "(ㆆᴗㆆ)
    😂
    😀
    😅
    😊
    🙂
    🙃
    😌
    😍
    😘
    😜
    😝
    😏
    😒
    🙄
    😳
    😡
    😔
    😫
    😱
    😭
    💩
    👻
    🙌
    🖕
    👍
    👫
    👬
    👭
    🌚
    🌝
    🙈
    💊
    😶
    🙏
    🍦
    🍉
    😣
    Source: github.com/k4yt3x/flowerhd
    颜文字
    Emoji
    小恐龙
    花!
    上一篇
    下一篇