zoukankan      html  css  js  c++  java
  • 实验吧_貌似有点难(php代码审计)&头有点大

    二话不说先贴代码

     1 <?php
     2 function GetIP(){
     3 if(!empty($_SERVER["HTTP_CLIENT_IP"]))
     4     $cip = $_SERVER["HTTP_CLIENT_IP"];
     5 else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
     6     $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
     7 else if(!empty($_SERVER["REMOTE_ADDR"]))
     8     $cip = $_SERVER["REMOTE_ADDR"];
     9 else
    10     $cip = "0.0.0.0";
    11 return $cip;
    12 }
    13 
    14 $GetIPs = GetIP();
    15 if ($GetIPs=="1.1.1.1"){
    16 echo "Great! Key is *********";
    17 }
    18 else{
    19 echo "错误!你的IP不在访问列表之内!";
    20 }
    21 ?>

    先来分析一下代码:

    首先对于SERVER["HTTP_CLIENT_IP"]这个神奇的参数,网上查了一下这可能是个传说,因为大佬们从来没有检测到这个参数,所以这个参数注定返回空,对于SERVER["HTTP_X_FORWARDED_FOR"]这个参数,可以由header中的X-Forwarded-For参数来控制,举个例子,要是你在头文件中加上X-Forwarded-For:0.0.0.0

    那么SERVER["HTTP_X_FORWARDED_FOR"]返回的就是0.0.0.0,这样就成功的伪造了IP地址,本题用的也是这个思路,

    最后看一下SERVER["REMOTE_ADDR"]参数,我就直接贴上大牛总结的:

    一、没有使用代理服务器的PHP获取客户端IP情况:

        REMOTE_ADDR = 客户端IP

    二、使用透明代理服务器的情况:Transparent Proxies

        REMOTE_ADDR = 最后一个代理服务器 IP

    三、使用普通匿名代理服务器的PHP获取客户端IP情况:Anonymous Proxies

        REMOTE_ADDR = 最后一个代理服务器 IP

    四、使用欺骗性代理服务器的情况:Distorting Proxies

        REMOTE_ADDR = 代理服务器 IP

    五、使用高匿名代理服务器的PHP获取客户端IP情况:High Anonymity Proxies (Elite proxies)

        REMOTE_ADDR = 代理服务器 IP

    本题当cip接收到X-Forwarded-For的值后就会返回cip,并进行判断语句

    飞快的抓包,在header中添上X-Forwarded-For:1.1.1.1,就能拿到key了

    头有点大

    网页中给出了提示:需要安装了.net 9.9,并确保你在英国并使用IE浏览器

    这一切都能通过修改头文件来实现伪造

    首先是伪装成.net9.9与IE,这两项都能通过修改User-Agent实现,只要在User-Agent后加上(MSIE 9.0;.NET CLR 9.9)

    接下来伪装在英国只要在Accept-Language中添上英国的语言代码en-gb就行

    这里附上各国的语言代码:

    zh-cn 简体中文
    zh-tw 繁体中文
    da-dk 丹麦语
    nl-nl 荷兰语
    en-us 美语
    en-gb 英语
    fr-fr 法语
    de-de 德语
    it-it 意大利语
    ja-jp 日语
    ko-kr 朝鲜语
    nb-no 挪威语
    pt-br 葡萄牙语
    es-es 西班牙语
    es-us 西班牙语(美国)

    
    
    
  • 相关阅读:
    Android
    nodejs 中 接受前端的数据请求的处理
    nodejs 文件操作
    nodejs 简单的搭建一个服务器
    angular 的跨域处理
    angular 的配置文件的应用
    angular 语法的应用
    淘宝的公共样式
    web编辑器的快捷键
    scss 用法 及 es6 用法讲解
  • 原文地址:https://www.cnblogs.com/Ragd0ll/p/8628063.html
Copyright © 2011-2022 走看看