Day24

welcome to bugkuctf

http://123.206.87.240:8006/test1/

本题要点:代码审计,PHP://filter ,  php://input ,  base64解密,反序列化

 
 
查看一下源码
 
审计源码,我们可以发现~
 
(1)get方式传递三个参数,分别是txt、file、password
 
(2)读取的$user文件内容===welcome to the bugkuctf
 
(3) $file要求为hint.php
 
接下来,我们需要了解
php:// - 访问各种I / O流

 
查一下php的手册~~~
参考:https://www.php.net/manual/en/wrappers.php.php
 
php://filter是PHP语言中特有的协议流,作用是作为一个“中间流”来处理其他流。
 
用法1:将POST内容转换成base64编码并输出:
readfile("php://filter/read=convert.base64-encode/resource=php://input"):
 
用法2:将PHP等容易引发冲突的文件流用php://filter协议流处理一遍
php://filter/read=convert.base64-encode/resource=./xxx.php
 
下面我们
构造payload~
 
 
base64解密
 
 
解出来的源码如下:
分析一下~
 
<?php  
  
class Flag{          //flag.php         
 
 // 这里 定义了一个类Flag
 
    public $file;  
    public function __tostring(){     
 //注意到下面有一个  __tostring 方法,可以理解为将这个类作为字符串执行时会自动执行的一个函数
 
        if(isset($this->file)){  
            echo file_get_contents($this->file);
            echo "<br>";
        return ("good");
        }  
    }  
}  
?>  
 
 
再用同样的方法看一下 index.php   ~
 
解出源码 ~
分析一下~
 
 
<?php  
$txt = $_GET["txt"];  
$file = $_GET["file"];  
$password = $_GET["password"];  
  
if(isset($txt)&&(file_get_contents($txt,'r')==="welcome to the bugkuctf")){  
    echo "hello friend!<br>";  
    if(preg_match("/flag/",$file)){
//这里可以看到对关键词flag进行了preg_match
 
 
        echo "不能现在就给你flag哦";
        exit();  
    }else{  
        include($file);   
        $password = unserialize($password);       // 反序列化
        echo $password;  
    }  
}else{  
    echo "you are not the number of bugku ! ";  
}  
  
?>  
  
<!--  
$user = $_GET["txt"];  
$file = $_GET["file"];  
$pass = $_GET["password"];  
  
if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){  
    echo "hello admin!<br>";  
    include($file); //hint.php  
//结合__tostring 方法,执行时,将变量$file作为文件名输出文件内容 猜想flag.php文件在此打开
}else{  
    echo "you are not admin ! ";  
}  
-->  
 
还注意到~
 
password=unserialize(password=unserialize(password);
 
因此知道需要构造序列化对象payload为
 
O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
 
 
 
 
完成!

ps:这道题很灵活的运用了php://filter和php://input,值得反复思考哦~

参考资料:

https://www.php.net/manual/en/wrappers.php.php

https://blog.csdn.net/csu_vc/article/details/78375203

Bugku-CTF之welcome to bugkuctf(php://filter和php://input的妙用)的更多相关文章

  1. Bugku CTF练习题---MISC---贝斯手

    Bugku CTF练习题---MISC---贝斯手 flag:flag{this_is_md5_and_base58} 解题步骤: 1.观察题目,下载附件 2.下载后进行解压,得到了一张图片.一个压缩 ...

  2. Bugku CTF练习题---MISC---telnet

    Bugku CTF练习题---MISC---telnet flag:flag{d316759c281bf925d600be698a4973d5} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现 ...

  3. Bugku CTF练习题---MISC---眼见非实

    Bugku CTF练习题---MISC---眼见非实 flag:flag{F1@g} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是一个压缩包,打开是一个Word文档,观察其中的内容,除了开 ...

  4. Bugku CTF练习题---MISC---宽带信息泄露

    Bugku CTF练习题---MISC---宽带信息泄露 flag:053700357621 解题步骤: 1.观察题目,下载附件 2.下载到电脑里发现是一个bin文件,二进制文件的一个种类,再看名称为 ...

  5. Bugku CTF练习题---MISC---这是一张单纯的图片

    Bugku CTF练习题---MISC---这是一张单纯的图片 flag:key{you are right} 解题步骤: 1.观察题目,下载附件 2.打开以后发现是一张图片,修改文件扩展名,查看属性 ...

  6. Bugku CTF练习题---加密---ok

    Bugku CTF练习题---加密---ok flag:flag{ok-ctf-1234-admin} 解题步骤: 1.观察题目,发现规律 2.发现所有内容都是ook写的, 直接上网搜索一下原因,发现 ...

  7. Bugku CTF练习题---加密---聪明的小羊

    Bugku CTF练习题---加密---聪明的小羊 flag:KEY{sad23jjdsa2} 解题步骤: 1.观察题目,发现其中的信息 2.经过题目判断,得知该题属于栅栏密码的一种,并且介绍中表明了 ...

  8. Bugku CTF练习题---分析---flag被盗

    Bugku CTF练习题---分析---flag被盗 flag:flag{This_is_a_f10g} 解题步骤: 1.观察题目,下载附件 2.下载的文件是一个数据包,果断使用wireshark打开 ...

  9. Bugku CTF练习题---杂项---隐写3

    Bugku CTF练习题---杂项---隐写3 flag:flag{He1l0_d4_ba1} 解题步骤: 1.观察题目,下载附件 2.打开图片,发现是一张大白,仔细观察一下总感觉少了点东西,这张图好 ...

随机推荐

  1. 模板设计在tomcat中的应用

    tomcat是一个常见的web容器,用户使用它可以很方便地管理servlet小程序,而servlet与tomcat的交互代码设计就用到了模板设计. 何谓模板设计,就是定义一个抽象父类,在该父类中组织子 ...

  2. Java中的常用集合类型总结

    1.可重复列表(List) LinkedList和ArrayList的区别:http://www.importnew.com/6629.html ArrayList vs. LinkedList vs ...

  3. Jenkins实现自动运行jmeter脚本

    下载安装包 --jenkins的war包 下载地址:http://jenkins-ci.org/ 链接:https://pan.baidu.com/s/1VhwgYWqn3Bex2kCHigW5wA ...

  4. 报文分析6、ARP报头结构

    ARP报头结构   硬件类型 协议类型 硬件地址长度 协议长度 操作类型 发送方的硬件地址(0-3字节) 源物理地址(4-5字节) 源IP地址(0-1字节) 源IP地址(2-3字节) 目标硬件地址(0 ...

  5. 2018-2019-2 20165336《网络对抗技术》Exp0 Kali安装 Week1

    2018-2019-2 20165336<网络对抗技术>Exp0 Kali安装 Week1 一.选择官网kali linux系统的版本 二.配置虚拟机 根据 安装教程(https://bl ...

  6. docker镜像导入导出

    1.使用 save命令将 镜像保存为文件docker save -o  自定义文件名.tar  已存在的镜像名 2.使用load命令将镜像文件保存到本地仓库docker load -i 自定义文件名. ...

  7. 把jmeter获取到的信息存到本地文件

    1.jmeter使用正则表达式提取器,获取到响应信息,把获取到的响应信息写到本地文件 2.添加后置Bean Shell ,写入以下脚本 3.打开本地文件查看,写入成功 脚本内容如下: FileWrit ...

  8. 数据库主库从库宕机重启后binlog数据同步

    由于阿里云经典网络迁移到专用网络,一不小心没有先预备方案调整网段, 导致实例无法以内网IP形式访问数据库,被迫进行数据库停机后网络网段调整,导致宕机了几个小时...被客户各种投诉爆了.. 基于这次数据 ...

  9. openssh-win64 on windows2016 ssh pub key config

    DO NOT follow the official M$ documentation at https://docs.microsoft.com/en-us/windows-server/admin ...

  10. 【QT】Pycharm add QT Desinger

    1. https://www.cnblogs.com/dalanjing/p/6978373.html -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWitho ...