BUU_Secret File WEB方向 第8

打开解题网址:

根据题目提示,审查源码:

直接访问 Archive_room.php:


尝试点击中间的 SECRET 超链接,竟然说没看清,那么应该是藏了某些东西在 secret.php 和 end.php 的跳转过程中:

直接上burpsuite,对页面跳转进行抓包:


发现一个 secr3t.php,访问获得源码:

看来是代码审计:


<?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里
?>

看到 data ,input ,tp等词眼,想到前不久刚学的 php 伪协议;

函数作用分析:

highlight_file(FILE) ,使php 代码高亮;
error_reporting(0), 不报错;
strstr() ,查找一个子串是否在另一个字符串中存在,存在则返回子串以及后面剩余部分,区分大小写;
stristr() ,与 strstr() 函数作用相同,不区分大小写;
代码分析:
源码中提示 flag 在flag.php中,而要使得 include()将flag.php 包含进来,则要使得 前面的 if 不成立,而 if 不成立,需要满足4个条件:

file 变量不能含有 …/ 这样目录穿越的字符;
file 变量不能含有 tp,input,data 这几个字符;
既然 input,tq,data …/, 被禁用,那我们就无法进行目录穿越,或者shell写入连接蚁剑,所以想到使用 php://filter 这个php伪协议;

构造payload :
secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php

payload 解析:

php://fliter: 用于读取文件源码;
read: php://filter的参数,用于读取数据;
convert.base64-encode 将读取的PHP代码(数据流)进行base64 编码,否则php代码会被执行而不再页面显示;
resource:指向要读取的文件,(要筛选的数据流);

大致过程是通过php://filter 伪协议对flag.php 进行base64数据流读取:

复制,解码,得到 flag.php 源码,得到flag.

关于一些函数具体用法请自行查阅资料,关于 php伪协议,请参阅大佬们写的文章:
php伪协议总结

php伪协议实现命令执行的七种姿势
————————————————
版权声明:本文为CSDN博主「我在干饭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46635165/article/details/108807899

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值