码迷,mamicode.com
首页 > 其他好文 > 详细

[极客大挑战 2019]Secret File

时间:2020-07-11 15:35:37      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:exit   截断   include   查找   src   epo   htm   str   erro   

0x01

进入页面如下

技术图片

看不到什么东西,所以查看源码

技术图片

源码中发现有一个链接到另一个页面,原页面为黑色看不到链接,所以我们转到链接给的页面

技术图片

有一个按钮,点击看看

技术图片

发现点击之后直接跳到了end.php页面,查看源码也没有什么有用的东西,应该是时间过短然后就跳转,所以我们用抓包截断一下,发现结果如下

技术图片

验证了我的想法,存在这个页面,直接进去看看

0x02

技术图片

<html>
    <title>secret</title>
    <meta charset="UTF-8">
<?php
    highlight_file(__FILE__);
    error_reporting(0);
    $file=$_GET[‘file‘];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file); 
//flag放在了flag.php里
?>
</html>

给出了一段html代码,存在inculde函数,看来需要用到文件包含来读取文件,先简单尝试一下

技术图片

直接查看会出现这样的结果,查看页面源代码也没有任何东西,看来无法直接查看内容

通过对html代码的审计我们发现,代码过滤了data协议,input协议,ftp协议,当然还有一些协议它没有过滤,所以这里我们可以用伪协议文件包含来读取flag

0x03

file://		访问本地文件系统
http://		访问 HTTPs 网址
ftp://		访问 ftp URL 
Php://		访问输入输出流
Zlib://		压缩流
Data://		数据
Ssh2://		security shell2 
Expect://		处理交互式的流
Glob://		查找匹配的文件路径

这里尝试file协议直接读取,发现无法读取

技术图片

所以尝试php伪协议,那么php://input也是被过滤了,所以这里唯一没有过滤的就是php://filter伪协议,所以这里我们使用该伪协议进行flag读取

payload:

?file=php://filter/convert.base64-encode/resource=flag.php 

技术图片

将读取到的内容base64解密得到flag

技术图片

总结

考察伪协议和代码审计,就是常见的伪协议的运用

[极客大挑战 2019]Secret File

标签:exit   截断   include   查找   src   epo   htm   str   erro   

原文地址:https://www.cnblogs.com/Jleixin/p/13283704.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!