Ret2dlresolve

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

支持HackTricks的其他方式:

基本信息

GOT/PLTRelro页面所述,没有Full Relro的二进制文件将在首次使用时解析符号(如外部库的地址)。这种解析是通过调用函数**_dl_runtime_resolve**来实现的。

_dl_runtime_resolve函数从堆栈中获取一些结构的引用,以便解析指定的符号。

因此,可以伪造所有这些结构,使动态链接解析请求的符号(如**system函数)并使用配置的参数(例如system('/bin/sh'))进行调用。

通常,通过创建一个初始ROP链调用read来伪造所有这些结构,然后将结构和字符串**'/bin/sh'传递,以便它们被read存储在已知位置,然后ROP链继续调用_dl_runtime_resolve,使其在伪造的结构中解析system**的地址并使用地址调用此地址到'/bin/sh'

在视频的后半部分中查看有关此技术的详细解释:

或查看以下页面以逐步解释:

攻击摘要

  1. 在某个位置写入伪造结构

  2. 设置system的第一个参数($rdi = &'/bin/sh'

  3. 在堆栈上设置要调用**_dl_runtime_resolve**的结构的地址

  4. 调用**_dl_runtime_resolve**

  5. **system**将被解析并使用'/bin/sh'作为参数调用

根据pwntools文档,这是**ret2dlresolve**攻击的样子。

示例

纯Pwntools

您可以在这里找到此技术的示例 包含了最终ROP链的非常好的解释,但这里是使用的最终利用:

原始

其他示例和参考资料

最后更新于