使用pwnable.kr 08的作业解决方案是leg和10是shellshock。 ARM汇编器。 Bash漏洞

图片

在本文中,我们回顾了ARM汇编器的语法,处理了shellshock漏洞,并从pwnable.kr网站解决了第8个和第10个任务。

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

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

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

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

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

寻腿解决方案


我们单击带有签名脚的第一个图标,然后被告知需要通过SSH与密码guest连接。 它们还提供C和汇编器的源代码。

图片

让我们下载两个文件并用C对源代码进行排序。通过汇编程序插入,我们可以说它使用ARM语法。 关于哈布雷(Habré)上的ARM汇编器在这里这里写道。

图片

在main()函数中,从用户那里收到一个数字,并将其与三个key()函数的结果之和进行比较。 让我们对它们进行排序。

图片

因此,来自PC寄存器的值被放置在寄存器R3中。 在ARM汇编程序中,PC寄存器包含要执行的下一条指令的地址。 我们看一下反汇编的代码。

图片

因此,key1()函数将返回值0x8ce4。 让我们分析一下key2()函数。

图片

0x8d08放入R3,然后再递增4并写入寄存器R0。 也就是说,key2()将返回0x8d0c。 考虑key3()。

图片

类似于第一个函数,我们得出的结论是key3()将从LR寄存器返回一个值。 LR包含函数的返回地址。 让我们看看该函数的调用位置并取以下地址。

图片

key3()函数将返回0x8d80。 通过SSH连接,然后输入程序中找到的三个数字的总和。

图片

图片

我们交出国旗并获得两分。

图片

Shellshock又名Bashdoor


Shellshock(Bashdoor)是GNU Bash程序中发现的一个软件漏洞,它允许在接收到某些非标准的环境变量值后执行任意命令。 该漏洞已收到编号CVE-2014-6271。

在类似Unix的操作系统上,每个程序都有环境变量。 子进程从父进程继承环境变量列表。 除了环境变量外,bash还维护一个内部函数列表-可以从可执行脚本调用的命名脚本。 从其他(父)脚本运行脚本时,可以导出现有环境变量和函数定义的值。 通过以特殊格式的新环境变量的形式对函数定义进行编码来导出函数定义,以空括号“()”开头,然后将函数定义为字符串。 新的bash实例在开始时会扫描所有环境变量,检测该格式并将其转换回内部函数的定义。 因此,如果攻击者能够提交任意环境变量以运行bash,那么就会出现执行任意命令的能力。

以下示例显示文本VULN。

env x='() { : ; }; echo “VULN”' bash -c “echo text” 

由于执行“ echo text”命令时,将加载环境变量x中包含的功能定义,并与其一起执行命令“ echo“ VULN””。

Shellshock作业解决方案


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

图片

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

图片

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

图片

让我们看看代码的结果。

图片

有趣的是调用系统功能的线。 根据名称,我们假设该程序旁边的bash易受该程序的攻击。 与本文所述的攻击类似,我们执行命令以读取标志。

 /bin/cat flag 

为此,我们在放置此命令的环境变量中定义一个函数。 然后运行程序。

 export x="() { :; }; /bin/cat flag;" 

图片

我们交出国旗,再得一分。 下篇文章见。

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

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


All Articles