从业 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)