DEF CON CTF Quals 2020的Crypto方向题目共有三道,包括两道Crypto题目和一道结合了RE和Crypto的题目,难度适中,期间出现了非预期解。本文分析了这三道题目的预期解和非预期解。
coooppersmith题目描述
该题目中,一个叫做coooppersmith的人建议发送加密消息给黑客,因为这被认为是安全的。程序要求输入长度不超过120的16进制串,打印RSA公钥,并在"Question"字符串下一行打印一个16进制串,最后接收用户输入。通过逆向分析和代码片段解析,发现程序生成公钥时,用户输入的16进制串会被处理为一个10进制整数,与生成的随机数结合生成素数,然后生成RSA公钥和私钥。用户输入的字符串用于构建加密问题,并在解密后提交答案以获取FLAG。
预期解
本题原本设计考察Coppersmith攻击,但通过修改输入过程,利用任意代码执行漏洞直接获取FLAG成为非预期解。预期解中,选手需要理解Coppersmith攻击原理,通过计算小整数解,实现对公钥的分解,继而解密“Question”后的密文,提交解密后的答案以获取FLAG。
ooo-flag-sharing题目描述
题目介绍了一个自定义的(5,100)门限密钥共享协议,选手需要根据提供的算法和文件内容计算密钥。程序漏洞在于矩阵X的计算过程未在模P下进行,利用这一漏洞,选手可以先记录漏洞。程序流程包括分享、恢复、生成和测试功能。选手可以执行功能3获取一个secret_id和3个share,通过功能4利用ORACLE和二分搜索方法在模P下恢复secret(即FLAG),首先需要通过两次功能1获取素数P,利用最大公约数计算出M的逆矩阵,再通过功能2恢复出m_e,然后使用ORACLE + 二分搜索方法恢复FLAG。
notbefoooled题目描述
题目旨在探索不被欺骗的技巧。服务器要求选手提供椭圆曲线的参数,生成随机点G并要求提交G * k。服务器通过Smart’s attack攻击选手提供的曲线和点,如果成功计算出k,则选手失败。非预期解中,服务器使用了错误的Python版本导致任意代码执行漏洞,通过input函数直接获取FLAG。预期解需要选手理解椭圆曲线和Smart’s attack原理,通过生成特定的anomalous曲线,利用canonical lift的特性使得攻击失效,从而获取FLAG。
所有题目分析中,重点在于理解题目设计思路、利用漏洞以及设计预期解的方法。通过深入分析代码和流程,选手能够找到有效的解题策略,从而获取FLAG。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。