使用pwnable.kr 02解决问题-冲突。 哈希冲突

图片

在本文中,我们回顾了哈希函数中的冲突,并从站点pwnable.kr解决了第二个任务。

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

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

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

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

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

哈希函数冲突


哈希函数冲突就是一对xy块,这是hash()哈希函数的结果,从中得出相同的块z

哈希(x)=哈希(y)= z

绝对任何哈希函数都可能发生冲突,因为输入集远大于哈希函数输出集。

图片

因此,哈希函数的稳定性取决于三个特征:

  • 不可逆性-无法通过散列恢复消息;
  • 抵抗第一类冲突-对于一条消息,不可能找到第二条消息,该消息将与第一个消息具有相同的哈希值;
  • 抵抗第二种冲突-您不能接收哈希相同的消息对。

碰撞作业解决方案


我们单击带有签名冲突的第二个图标,并被告知需要通过SSH与密码guest连接。

图片

连接后,我们会看到相应的横幅。

图片

让我们找出服务器上有哪些文件,以及我们拥有的权限。

ls -l 

图片

因此,我们可以读取程序的源代码,因为每个人都有读取的权利,并可以根据拥有者的权限(设置粘性位)执行col程序。 让我们看一下代码的结果。

图片

从代码中可以看出,程序将20个字符的字符串作为参数,并将其传递给计算哈希值并将其与参考值进行比较的函数。

图片

图片

在函数内部,我们的字符串分为5个4字节的块,这些块将转换为数字,然后将这些数字相加。 因此,我们需要5个数字,总计为0x21dd09ec。 满足条件:0xd1d905e8和0x01010101。

图片

现在,您需要将不可打印的字符作为程序的参数传递给命令行。 为此,我们使用bash语法和python解释器。 重要的是要注意,当这些数字以相反的顺序存储在计算机的内存中时,我们将其翻转。

 ./col $(python - “print('\x01\x01\x01\x01'*4 + '\xe8\x05\xd9\x1d')”) 

图片

结果,我们得到了三分。

图片

现在,我们研究了一个非常简单的冲突示例,在下一篇文章中,我们将解决第三个任务并分析漏洞,例如堆栈上的缓冲区溢出。 在以下文章中见。

我们在电报频道中: Telegram中频道

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


All Articles