列表

详情


BL8. 写一段程序判断IP字符串是否属于内网IP

描述

从业 666 年的 BILIBILI 网络安全工程师 KindMo 最近很困惑,公司有一个业务总是受到 SSRF 攻击。请帮他写一个程序,判断输入的字符串是否属于内网IP,用于防御该漏洞。
我们知道常见的内网IP有,127.0.0.1,192.168.0.1 等。

输入描述

每次输入仅包含一个IP字符串,即一个测试样例

输出描述

对于每个测试实例输出整数1或0,1代表True,即输入属于内网IP,0代表False,即输入不属于内网IP或不是IP字符串。

示例1

输入:

42.96.146.169

输出:

0

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2021-09-22

#include <stdio.h>

int main()
{
    int a,b,c,d;
    scanf("%d.%d.%d.%d",&a,&b,&c,&d);
    if(a==10 ||(a==172 &&(b>=16 && b<32))||(a==192 && b==168))
        printf("%d",1);
    else
        printf("%d",0);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-05-20

#include <stdio.h>
   
int main(){
    int a,b,c,d;
    scanf("%d.%d.%d.%d", &a, &b, &c, &d);
    if(a==10 || (a==172 && (b>=16 && b<32)) || (a==192 && b==168))
        printf("1");
    else
        printf("0");
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-09-01

/*
私有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
    
*/

#include <stdio.h>

int main(){
    int a,b,c,d;
    scanf("%d.%d.%d.%d",&a,&b,&c,&d);
    //printf("%d %d %d %d\n",a,b,c,d);
    if(a == 10){
        printf("1");
    }
    else if(a == 172 && ( b>=16 && b<=31)){
        printf("1");
    }
    else if(a == 192 && b==168){
        printf("1");
    }
    else if(a==127){
        printf("1");
    }
    else
        printf("0");
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-07-28

#include <stdio.h>
   
int main(){
    int a,b,c,d;
    scanf("%d.%d.%d.%d", &a, &b, &c, &d);
    if(a==10 || (a==172 && (b>=16 && b<32)) || (a==192 && b==168))
        printf("1");
    else
        printf("0");
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-05-20

#include <stdio.h>
  
int main(){
    int a,b,c,d;
    scanf("%d.%d.%d.%d", &a, &b, &c, &d);
    if(a==10 || (a==172 && (b>=16 && b<32)) || (a==192 && b==168))
        printf("1");
    else
        printf("0");
    return 0;
}

上一题