使用pwnable.kr 25解决问题-OTP Linux文件大小限制

图片

在本文中,我们将从网站pwnable.kr解决第25个任务。

组织信息
特别是对于那些想要学习新知识并在信息和计算机安全性的任何领域中发展的人们,我将撰写和讨论以下类别:

  • PWN;
  • 密码学(加密);
  • 网络技术(网络);
  • 反向(反向工程);
  • 隐写术(Stegano);
  • 搜索和利用Web漏洞。

除此之外,我将分享我在计算机取证,恶意软件和固件分析,对无线网络和局域网的攻击,进行笔测试和编写漏洞利用程序方面的经验。

为了使您可以查找有关新文章,软件和其他信息的信息,我在Telegram中创建了一个频道,并创建了一个小组来讨论 ICD领域中的所有问题 。 另外,我会亲自考虑您的个人要求,问题,建议和建议, 并会回答所有人

提供所有信息仅出于教育目的。 对于由于使用本文档而获得的知识和方法对某人造成的任何损害,本文档的作者不承担任何责任。

OTP作业解决方案


我们继续第二部分。 我马上要说,这比第一个要困难,但是这次他们为我们提供了程序的源代码。 不要忘记此处(https://t.me/RalfHackerPublicChat)和此处(https://t.me/RalfHackerChannel)的讨论。 让我们开始吧。

单击带有签名otp的图标。 我们提供了用于连接的地址和端口。

图片

我们连接并环顾服务器。

图片

我们无法读取的标志,程序及其源代码。 让我们看看源。

图片

让我们来分析一下。 该程序将密码作为参数。

图片

接下来,随机的16个字节存储在otp变量中。

图片

在tmp文件夹中创建一个具有随机名称(otp的前8个字节)的文件,并将随机8个字节(otp的后8个字节)写入该文件。

图片

由于某种原因,创建的文件将读取该值,并将其与输入的密码进行比较。

图片

这就是漏洞所在。 它包含在文件中生成的编号的中间存储。 我们可以将文件大小限制为例如0,然后比较使用密码0进行读写时,可以这样进行。

# ulimit -f 0 

图片

现在运行程序。

图片

我们得到一个错误。 没关系,因为可以使用相同的python处理。

 python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

图片

我们得到国旗,肺部得到100分。 我们继续:在下一篇文章中,我们将介绍Web。 您可以通过Telegram加入我们。

Source: https://habr.com/ru/post/zh-CN471042/


All Articles