微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 CPU x86-64 寄存器中执行不同的命令?

如何解决如何在 CPU x86-64 寄存器中执行不同的命令?

多年前,一位老师曾在课堂上说过“通过 cpu 解析的所有内容也可以被利用”。

当时我对这个话题了解不多,但现在这句话一直在唠叨我和我 自己在互联网上缺乏正确的词汇来找到这个问题的答案,所以我恳请您帮助。

我们上过关于“cat”、“grep”和“less”的课程,她说在最坏的情况下,如果我们解析错误内容,即使这些命令也会造成伤害。

我真的不明白她是什么意思。我知道 cpu 寄存器是如何工作的,我们还必须编写一个教育缓冲区溢出,所以我也看到了寄存器中的汇编代码。 我仍然没有得到以下内容

  1. 命令是如何在 cpu 中执行的?例如我使用'cat',所以某个时候会有一个命令调用。但是我输入的数据是如何解析到 cpu 的呢?如果我'cat'一个包含'hello world'的.txt文件 - 我可以在cpu寄存器的某个地方找到十六进制的字符串吗?如果是:
  2. cpu 如何知道该字符串不会被执行?
  3. 你能想出任何可以利用上述命令的场景吗? Afaik 只能通过它解析文本,这怎么可能被利用?我需要注意什么?

非常感谢!

解决方法

机器代码通过被 CPU 的取指令部分取来执行,在指令指针 RIP 所指向的地址处。 CPU 只能从内存中执行机器代码。

通用寄存器从数据加载/存储指令中加载数据,例如 mov eax,[rdi]。将数据保存在寄存器中与将其作为机器代码执行完全无关。请记住,RIP 是一个指针,而不是实际的机器代码字节。 (RIP 可以通过跳转指令设置,包括间接跳转将 GP 寄存器复制到其中,或者 ret 将堆栈弹出)。

学习一些汇编语言的基础知识会有所帮助,因为您似乎在那里遗漏了一些关键概念。 当整个前提似乎建立在对计算机如何工作的一些误解之上时,很难回答这个问题的安全部分。 (我认为,如果不写一本关于汇编语言的书,我就无法在这里轻松地弄清楚这一点。)我真正能做的就是向您指出 CPU 架构的内容,这些内容回答了指令如何执行的部分标题问题。 (不是来自寄存器)。

相关:


你一直在使用“解析”这个词,但我认为你的意思是“通过”。您不会“解析内容”,但您可以“通过内容”。无论如何不,cat 通常不涉及复制或查看用户空间中的数据,除非您运行 cat -n 来添加行号。

有关使用 catread 系统调用的普通 write 的 x86-64 Linux asm 实现,请参阅 Race condition when piping through x86-64 assembly program。除了命令行参数之外,其中没有任何内容依赖于数据。被复制的数据永远不会加载到用户空间中的 CPU 寄存器中。

在内核内部,Linux 在 x86-64 上实现 copy_to_user 系统调用中的 read() 通常会使用 rep movsb 进行复制,而不是具有单独加载/存储的循环,因此即使在内核中,数据也从页面缓存、管道缓冲区或其他任何地方复制到用户空间,而实际上并不在寄存器中。 (write 将其复制到连接到的任何标准输出也是如此。)

其他命令,例如 lessgrep,会将数据加载到寄存器中,但这不会直接带来将数据作为代码执行的任何风险。

,

彼得已经回答了大部分问题。不过我想补充几点。

  1. 命令是如何在 CPU 中执行的?例如我使用'cat',所以某个时候会有一个命令调用。但是我输入的数据是如何解析到 CPU 的呢?如果我“cat”一个包含“hello world”的 .txt 文件 - 我可以在 CPU 寄存器的某处找到该字符串吗?

cat 不是由 CPU cat.c 直接执行的。您可以查看源代码并深入了解。 . 实际发生的是,每条指令都被转换为汇编指令,并由 CPU 执行。这些指令不容易受到攻击,因为它们所做的只是移动一些数据并切换一些位。大部分漏洞是由于内存管理造成的,cat 过去一直存在漏洞Check this for more detail

  1. CPU 如何知道该字符串不会被执行?

它没有。操作系统的工作是告诉什么该执行,什么不执行。

  1. 你能想出任何可以利用上述命令的场景吗? Afaik 只能通过它解析文本,这怎么可能被利用?我需要注意什么?

您必须注意如何将文本文件传递到内存。您甚至可以制作自己的解释器来执行 txt 文件,然后解释器会告诉 CPU 如何执行该指令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。