如何使用 Phalcon 调试深入事务

Phalcon 支持事务的调试,这是一个强大的功能,可以显著提高复杂事务的分析效率。

如何使用 Phalcon 调试深入事务

Phalcon 支持交易的调试,这是一项强大的功能,可以显著提高复杂交易的分析效率。在接下来的内容中,我们将使用 Euler 协议的利用交易 来演示此功能。

点击此交易的链接: https://phalcon.blocksec.com/explorer/tx/eth/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d

如何进入调试模式

有两种不同的方式可以进入调试模式。第一种方式是从调用流程视图中的特定行进入调试模式,第二种方式是点击“调试”按钮。

方法一:通过执行跟踪

Phalcon 中的调用流程提供了一个视图,让用户能够全面了解攻击交易并识别可能的利用点。当交易中包含数百个外部调用和事件时,此功能非常有用 在此交易中

在调用流程中选择行以打开调试模式

在 Euler 协议利用的情况下,攻击交易包含许多步骤,包括“从 Aave 借用 Flashloan”、“将 Dai 存入 Euler 协议”等。但在其中一个步骤中,攻击者调用了 donateToReserves() 函数,向 Euler 协议“捐赠”了巨额资金,这引起了我们的警惕。在这种情况下,我们可以直接从该步骤通过点击调试图标来调试交易。

方法二:通过“调试”按钮

进入调试模式的另一种方法是单击右上角的“调试”按钮。

调试视图布局

进入调试模式后,我们可以看到以下屏幕。

调试视图布局

此屏幕包含五个面板,如下所示。

  • 调用跟踪面板: 显示外部调用和事件的跟踪。
  • 源代码面板: 提供合约的源代码和当前行(高亮显示),该行引用了函数的调用位置。
  • 调试控制台: 一个调用级别的单步调试控制台。
  • 调试跟踪面板: 显示当前合约的调用堆栈,包含内部调用和外部调用。
  • 参数和返回值面板: 显示调用参数和返回值。

有时,源代码面板不会显示代码。这是因为该面板默认显示函数的调用位置。由于该攻击合约未经验证(未开源),因此无法显示源代码。

eDai 合约已经验证,因此我们可以 步入 查看 donateToReserves() 的具体实现。单击 步入 后,当前行将变为 eDai 合约内部的调用位置。这是一个代理合约,代码如下所示。

合约已验证时的调试模式

再次 步入 后,我们终于可以看到 donateToReserves() 的具体实现。

调试 donateToReserves()

如何使用调试控制台

调试控制台用于帮助理解详细的调用跟踪,包括内部函数调用(行开头的 Jump 表示这是一个内部调用)。请注意,调用跟踪面板没有内部调用跟踪。

调试视图布局

为了遍历详细的执行过程,Phalcon 在 调试控制台 上提供了四个按钮,下一步上一步 在两种颜色下具有略微不同的逻辑。

  • 下一步(红色按钮):转到整个调用跟踪中的下一个调用位置。
  • 下一步(蓝色按钮):转到当前函数的下一个调用位置。
  • 上一步(红色按钮):转到整个调用跟踪中的上一个调用位置。
  • 上一步(蓝色按钮):转到当前函数的上一个调用位置。
  • 步入:进入被调用的函数。
  • 步出:返回到当前函数的调用位置。

例如,我们可以单击 下一步 按钮来分析 donateToReserves() 的实现。我们可以发现攻击者捐赠了 1 亿 eDAI,使得 eDAI 少于 dDAI,从而符合清算条件。因此,根本原因是 donateToReserves() 缺少对符合清算条件的流动性检查,攻击者因此清算了自己并提取了 3800 万 eDAI

Euler 利用的根本原因

调试视图共享

交易的调试可以直接通过 URL 进行共享,该 URL 包含跟踪的行号。当其他人打开链接时,将显示相同的调试视图。这对于您想与他人分享分析结果时非常有用。团队成员可以使用此功能进行协作、分析和共同讨论!

总之,使用 Phalcon Debug 分析攻击交易的典型工作流程如下。

  • 在调用流程中找到潜在问题,并从那里开始调试。
  • 调试源代码并检查内部调用的参数和返回值。
  • 与团队成员(或公开读者)共享您的分析视图以进行协作。

其他功能

Phalcon Debug 具有许多可以帮助您提高效率的功能。

  • 通过打开以下开关,调用跟踪视图可以显示完整的参数。
参数开关
  • 对于外部调用,单击“原始数据”可以看到原始调用参数。

了解更多关于 BlockSec 的信息:网站 | 文档 | Twitter | Medium | TG 群组

Sign up for the latest updates