-
-
[原创]tenda系列设备用户态仿真搭建
-
发表于: 2023-3-2 21:58 10703
-
Tenda AC18为例
下载链接:622K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8%4N6F1i4K6u0W2N6r3g2F1k6r3q4Q4x3X3g2U0L8$3#2Q4x3X3g2U0L8W2)9J5c8Y4g2H3L8r3!0S2k6r3k6A6L8r3g2Q4x3V1k6m8b7K6p5^5i4K6u0r3j5h3x3I4z5q4)9#2k6X3E0X3V15.03.05.19(6318)_cn.zip
1、正常对固件进行解包,查看固件的架构,此AX18是arm小端,因此在文件系统下执行下列命令
2、使用下列命令进行用户态仿真
此时处出现下列情况,导致一直处于等待状态,可以使用pacth解决这个问题。
解决方法
使用IDA pro打开固件,使用字符串搜索shift + F12,定位字符串出现的位置。
可以看到,原包中的httpd的运行流程,基本块1-->基本块2-->基本块3-->基本块2...一直在循环,导致处于静止状态,在基本块2的最后一条指令跳转的时候,它根据上一条指令CMP R3,#0的结果进行跳转,所以要想基本块2流向基本块4,就需要是用keypetch进行将该指令进行patch,修改为CMP R3,#1,
将patch后的httpd替换原来的httpd,在此进行运行,ha? 运行之后还是同样的结果
那就只好动态调试,看看程序是如何跳转的。现在CMP R3,#1处打上断点。在Ubuntu上开启远程调试端口。
之后在IDA pro配置选项如下图:
当程序运行到断点的时候,在未执行CMP R3.#1时候,R3的值为1,使用F8进行执行,可看到程序还是流向了基本块3
最直接的解决方法就是,将基本块3的最后一个跳转指令nop掉,
继续运行,如下图结果
终于不在处于等待状态,接下来接着定位问题出现的位置,在IDA Pro中定位该字符串。如下图
如图显示,程序流向为基本块a-->基本块b,导致出现错误,正常应该是基本块a-->基本块c,所以这里patch指令CMP R3,#0,修改为CMP R3,#0.如下图所示
继续执行,如下所示:
可以看到程序正常执行,但是此时的IP地址不正确,解决方法如下两条命令
程序正常运行
还有另外一种情况,程序可以正常运行,并且可以访问该IP地址,但是访问的页面显示错误,此时需要在文件系统中修改文件的软连接。
此时webroot链接到var文件中的文件,此时就需要包该weboot文件删除,修改链接文件的地址。
之后就可以看到该页面的正常显示。
cp $(which qemu
-
arm
-
static) .
/
cp $(which qemu
-
arm
-
static) .
/
sudo chroot .
/
.
/
qemu
-
arm
-
static .
/
bin
/
httpd
sudo chroot .
/
.
/
qemu
-
arm
-
static .
/
bin
/
httpd
sudo chroot .
/
.
/
qemu
-
arm
-
static
-
g
1234
.
/
bin
/
httpd
sudo chroot .
/
.
/
qemu
-
arm
-
static
-
g
1234
.
/
bin
/
httpd
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!