如何解决SEH缓冲区溢出测试中socket.error: [Errno 113]无路由到主机错误?
解决Easy File Webserver SEH溢出时的socket.error: [Errno 113] No route to host错误
嘿,我看你在尝试对Easy File Webserver做SEH缓冲区溢出利用时碰到了网络连接的问题,这个[Errno 113] No route to host错误本质是你的Kali主机无法和目标主机建立网络连接,和溢出代码本身关系不大,咱们先从网络层面一步步排查:
首先还原你遇到的报错和代码片段:
执行报错
root@kali:~/Desktop# python default.py [+]Sending the Exploit.... Traceback (most recent call last): File "default.py", line 42, in <module> s.connect((host, port)) File "/usr/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 113] No route to host
你的代码片段
import sys, socket, struct shellcode = ("Ignore the shellcode.") # ... 剩余代码省略
接下来是具体的排查步骤:
- 先确认目标主机是否可达:在Kali终端里执行
ping <目标主机IP>,如果没有收到回包,说明两台机器不在同一网段、目标主机未开机,或者中间有设备拦截了ICMP请求。先把这个基础连通性搞定。 - 检查目标端口是否开放:用
nmap -p <目标端口> <目标主机IP>扫描端口状态,如果显示closed或者filtered,那说明Easy File Webserver没正常启动,或者端口配置错了,或者目标防火墙拦截了该端口。 - 验证防火墙规则:
- 目标主机(通常是Windows系统):暂时关闭Windows Defender防火墙或者把Easy File Webserver的监听端口加入放行列表;
- Kali主机:如果开启了
ufw,执行ufw allow out <目标端口>/tcp确保出站连接不被拦截。
- 核对代码中的连接参数:再检查一遍代码里的
host变量是不是目标主机的正确IP,port是不是Easy File Webserver实际监听的端口(默认一般是80,也可能是自定义的其他端口),别不小心输错了。 - 用telnet测试连接:在Kali里执行
telnet <目标主机IP> <目标端口>,如果能成功建立连接,那再回头检查代码里的socket逻辑,比如是不是误用了UDP协议(Easy File Webserver是HTTP服务,要用TCP);如果连不上,就继续排查网络层面的问题。
内容的提问来源于stack exchange,提问作者Xyltic
相关产品推荐
相关产品推荐

