在"路由器无限重启救砖之旅1"这篇文章中,作者讲述了在挖掘路由器漏洞过程中意外触发了一个命令执行漏洞,导致通过漏洞点发送的`reboot`命令导致设备无法正常工作,即"变砖"。这个过程涉及到了对路由器内部构造和故障排查的深入理解。
1. **提取固件**:
作者首先意识到设备变砖的原因在于`reboot`命令被保存在路由器的非易失性随机访问存储器(NVRAM)中。为了修复这个问题,他们尝试恢复出厂设置,但发现普通的重置键无法清除NVRAM中的设置。因此,他们决定提取路由器的固件(Flash)以便进行进一步的操作。通过使用`bdinfo`命令,他们找到了Flash的起始地址(0x9F000000,16M大小),这是进行后续操作的基础。
2. **分析固件**:
为了修复问题,他们需要定位到`reboot`命令所在的代码区域。通过内存分析,作者了解到内存地址0x87F77FB0是boot_params的位置,而Flash在内存中的实际地址是0x9F000000。这表明固件可能存储在特定的区域,并且可能包含关键的启动参数处理逻辑。
3. **查看写入的数据**:
作者试图通过修改启动参数来避免`reboot`命令的执行。他们尝试使用`nvramsetname=""`来清除NVRAM中的数据,但未成功,因为设备在web服务启动后迅速重启。这显示了系统的自动重启机制非常迅速,给他们争取时间的机会有限。
4. **重启控制**:
由于无法在正常模式下修改启动参数或通过`saveenv`命令保存更改,作者尝试进入单用户模式或U-Boot,这是一个更底层的系统环境,可以直接修改硬件配置。然而,由于U-Boot缺乏`saveenv`功能,他们的这一尝试也被阻碍了。
5. **内存修改和紧急救援**:
最终,作者决定采取更直接的方法,即提取、修改固件,然后在U-Boot环境中直接替换有问题的部分,以防止`reboot`命令的执行。这一步骤涉及高级的硬件操作和深入的软件调试技巧,是挽救"砖化"设备的关键步骤。
这篇文章主要讲述了如何通过深入理解路由器固件结构、利用内存地址信息以及执行高级的固件修改,来解决因误操作导致的路由器重启问题,以恢复设备的正常运行。这展示了网络安全研究人员在面对硬件问题时的策略和技巧,同时也强调了对设备内部结构和操作的深入理解的重要性。