今回の攻撃では、ハッカーは市場契約内のclaimRewards関数を利用して再ステーキングを実行し、ステーキング契約の残高を引き上げることで利益を得ました。具体的な手順は以下の通りです:1. **攻撃用コントラクトの作成**:まず、ハッカーは攻撃を実行するためのコントラクトを作成しました。2. **公式ファクトリーを使用して市場コントラクトの作成**:次に、ハッカーは公式提供のファクトリーを利用して、攻撃対象の市場コントラクトに対応するインスタンスを作成しました。3. **一括収穫報酬関数の呼び出し**:ハッカーはステーキングコントラクトのbatchHarvestMarketRewards関数を呼び出し、特定の市場の報酬を更新しました。4. **再ステーキングの脆弱性のトリガー**:報酬更新の過程で、システムは攻撃コントラクトのclaimRewards関数をコールバックし、再ステーキングを実現しました。この過程で、ハッカーはフラッシュローンを利用して得た資産をステーキングし、ステーキングコントラクトの資産バランスが崩れる結果となりました。5. **余剰資産の引き出し**:攻撃者はステーキング後の余剰資産を引き出し、フラッシュローンを返済することで利益を得ました。要約すると、ハッカーは市場契約の設計上の欠陥を利用し、再ステーキング攻撃の手法で大量の暗号資産をPenpieプロトコルから奪いました。