在本文中,我们将解决该站点的第 25 个任务
组织信息特别是对于那些想要学习新东西并在信息和计算机安全任何领域进行发展的人,我将撰写并讨论以下类别:
- PWN;
- 密码学(加密);
- 网络技术(网络);
- 逆向(逆向工程);
- 隐写术(Stegano);
- WEB漏洞的搜索和利用。
除此之外,我还将分享我在计算机取证、恶意软件和固件分析、无线网络和局域网攻击、进行渗透测试和编写漏洞利用方面的经验。
为了让您可以了解新的文章、软件和其他信息,我创建了
所有信息仅用于教育目的。 对于因使用学习本文档所获得的知识和方法而对任何人造成的任何损害,本文档的作者不承担任何责任。
解决otp任务
我们继续第二部分。 我马上就说它比第一个更复杂,但是这次他们不提供程序的源代码。 不要忘记这里 (https://t.me/RalfHackerPublicChat) 和这里 (https://t.me/RalfHackerChannel) 的讨论。 让我们开始。
单击带有签名 otp 的图标。 我们获得了要连接的地址和端口。
我们连接并查看服务器。
一个我们无法读取的标志,一个程序及其源代码。 我们来看看源码。
我们来整理一下吧。 该程序采用密码作为参数。
接下来,随机 16 个字节存储在 otp 变量中。
在 tmp 文件夹中创建一个具有随机名称的文件(前 8 个字节是 otp),并向其中写入随机 8 个字节(后 8 个字节是 otp)。
由于某种原因,创建的文件的值被读取并与输入的密码进行比较。
这就是漏洞出现的地方。 它包括将生成的数字中间保存到文件中。 我们可以限制文件的大小,比如限制为0,那么在写入和读取的时候,都会将0与密码进行比较,可以这样做。
# ulimit -f 0
现在让我们运行该程序。
我们得到一个错误。 没关系,用同样的python就可以处理。
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
我们得到了旗帜并轻松获得了 100 分。 我们继续:在下一篇文章中,我们将涉及网络。 您可以加入我们:
来源: habr.com