从业 666 年的 BILIBILI 网络安全工程师 KindMo 最近很困惑,公司有一个业务总是受到 SSRF 攻击。请帮他写一个程序,判断输入的字符串是否属于内网IP,用于防御该漏洞。
我们知道常见的内网IP有,127.0.0.1,192.168.0.1 等。
每次输入仅包含一个IP字符串,即一个测试样例
对于每个测试实例输出整数1或0,1代表True,即输入属于内网IP,0代表False,即输入不属于内网IP或不是IP字符串。
42.96.146.169
0
私有IP地址范围: A类:10.0.0.0-10.255.255.255 B类:172.16.0.0-172.31.255.255 C类:192.168.0.0-192.168.255.255 localhost:127.0.0.1
# -*- coding:utf-8 -*-
def check_internal_ip(check_ip):
check_ip_list = check_ip.split(".")
if len(check_ip_list) == 4:
a, b, c, d = check_ip_list
a = int(a)
b = int(b)
c = int(c)
d = int(d)
if a > 255 or b > 255 or c > 255 or d > 255:
return 0
elif a == 10 and b >= 0 and c >= 0 and d >= 0:
return 1
elif a == 172 and (16 <= b <= 31) and c >= 0 and d >= 0:
return 1
elif a == 192 and b == 168 and c >= 0 and d >= 0:
return 1
else:
return 0
else:
return 0
check_ip = input()
print(check_internal_ip(check_ip))
if input().split('.')[0] in ['127','192','10','172']: print(1)
else: print(0) if input()[:3] in ('127','192','10.','172'): print(1)
else: print(0)