Skip to content

Web 基础

约 1585 个字 177 行代码 5 张图片 预计阅读时间 7 分钟

Abstract

第一部分笔记,有点零散ww

https://cubicy.icu

客户端:(跳转、点击逻辑)

服务端:(登录,认真) 多服务器:分布式系统

认证:证明你是你 鉴权:知道你的身份之后,是否有权限访问

DNS系统,将域名→IP

OSI

1物理层:电线、电波;进行一些冗余的编码/纠错 2数据链路:网卡,处理冲突/静默 //物理层

3网络层:IP 子网运行、分组传输、路由选择 //主机到主机,数据包寻址(快递公司) 4传输层:TCP 包裹分拣,数据包是给谁的 //应用到应用,或者说端到端(菜鸟驿站)

5会话层/表示层/应用层 //应用层

TCP与UDP

传输层:端对端(数据不会混淆) TCP:无边界的字节流 只传输字符本身,开头结尾都由应用层来决定(规定特殊开头和结尾)//黏包 Buffer里攒够发,recv/send 不是一一对应

UDP:无连接的数据包,来一个发一个,接受buffer满了,直接丢掉(比较自由)

IP协议

DNS记录 A记录:IPv4 AAAA记录:IPv6 CNAME记录:别名,指向另一个域名

nslookup 命令:

基本使用:

  1. 如果什么都不加:默认交互模式

命令示例:

PS C:\Users\leexi> nslookup
默认服务器:  dns1.zju.edu.cn
Address:  10.10.0.21

>
> cc98.org
服务器:  dns1.zju.edu.cn
Address:  10.10.0.21

非权威应答:
名称:    cc98.org
Address:  10.10.98.98

> www.baidu.com
服务器:  dns1.zju.edu.cn
Address:  10.10.0.21

非权威应答:
名称:    www.a.shifen.com
Addresses:  2409:8c20:6:1135:0:ff:b027:210c
          2409:8c20:6:1d55:0:ff:b09c:7d77
          36.155.132.3
          36.155.132.76
Aliases:  www.baidu.com
  1. 非权威应答:缓存,一个电脑上不可能存这么多域名,

  2. 缓存有什么问题:可能缺乏时效性,cc98的IP地址突然变了,可能就会返回错误结果

  3. 真正(所谓权威)的流程: 以www.cc98.org 为例,完整而言是www.cc98.org. 先查找根域名是org.的服务器,再挑一个问是cc98.org的服务器

可以指定使用类型:

nslookup -qt=A A类型

返回的就是地址

PS D:\MyRepository\zjuers-slowist-version> nslookup -qt=A www.cc98.org
服务器:  dns1.zju.edu.cn
Address:  10.10.0.21

非权威应答:
名称:    www.cc98.org
Address:  10.10.98.98
nslookup -qt=NS NameServer

可以一层一层地寻找根服务器对应的IP,进行询问

for e.g.

第一层:.

PS C:\Users\leexi> nslookup -qt=NS .
服务器:  dns1.zju.edu.cn
Address:  10.10.0.21

非权威应答:
(root)  nameserver = d.root-servers.net
(root)  nameserver = i.root-servers.net
(root)  nameserver = g.root-servers.net
(root)  nameserver = k.root-servers.net
(root)  nameserver = f.root-servers.net
(root)  nameserver = e.root-servers.net
(root)  nameserver = l.root-servers.net
(root)  nameserver = c.root-servers.net
(root)  nameserver = j.root-servers.net
(root)  nameserver = m.root-servers.net
(root)  nameserver = a.root-servers.net
(root)  nameserver = b.root-servers.net
(root)  nameserver = h.root-servers.net

a.root-servers.net      internet address = 198.41.0.4
b.root-servers.net      internet address = 170.247.170.2
c.root-servers.net      internet address = 192.33.4.12
d.root-servers.net      internet address = 199.7.91.13
e.root-servers.net      internet address = 192.203.230.10
f.root-servers.net      internet address = 192.5.5.241
g.root-servers.net      internet address = 192.112.36.4
h.root-servers.net      internet address = 198.97.190.53
i.root-servers.net      internet address = 192.36.148.17
j.root-servers.net      internet address = 192.58.128.30
k.root-servers.net      internet address = 193.0.14.129
l.root-servers.net      internet address = 199.7.83.42
m.root-servers.net      internet address = 202.12.27.33
a.root-servers.net      AAAA IPv6 address = 2001:503:ba3e::2:30
b.root-servers.net      AAAA IPv6 address = 2801:1b8:10::b

接着,选择一台服务器,for .e.g. 198.41.0.4 指定像这个服务器询问,哪台服务器掌管结尾是.com的服务器

PS C:\Users\leexi> nslookup -qt=NS com. 198.41.0.4
in-addr.arpa    nameserver = a.in-addr-servers.arpa
in-addr.arpa    nameserver = c.in-addr-servers.arpa
in-addr.arpa    nameserver = d.in-addr-servers.arpa
in-addr.arpa    nameserver = b.in-addr-servers.arpa
in-addr.arpa    nameserver = e.in-addr-servers.arpa
in-addr.arpa    nameserver = f.in-addr-servers.arpa
a.in-addr-servers.arpa  internet address = 199.180.182.53
b.in-addr-servers.arpa  internet address = 199.253.183.183
c.in-addr-servers.arpa  internet address = 196.216.169.10
d.in-addr-servers.arpa  internet address = 200.10.60.53
e.in-addr-servers.arpa  internet address = 203.119.86.101
f.in-addr-servers.arpa  internet address = 193.0.9.1
a.in-addr-servers.arpa  AAAA IPv6 address = 2620:37:e000::53
b.in-addr-servers.arpa  AAAA IPv6 address = 2001:500:87::87
c.in-addr-servers.arpa  AAAA IPv6 address = 2001:43f8:110::10
d.in-addr-servers.arpa  AAAA IPv6 address = 2001:13c7:7010::53
e.in-addr-servers.arpa  AAAA IPv6 address = 2001:dd8:6::101
f.in-addr-servers.arpa  AAAA IPv6 address = 2001:67c:e0::1
服务器:  UnKnown
Address:  198.41.0.4

com     nameserver = c.gtld-servers.net
com     nameserver = m.gtld-servers.net
com     nameserver = f.gtld-servers.net
com     nameserver = h.gtld-servers.net
com     nameserver = a.gtld-servers.net
com     nameserver = b.gtld-servers.net
com     nameserver = g.gtld-servers.net
com     nameserver = i.gtld-servers.net
com     nameserver = j.gtld-servers.net
com     nameserver = e.gtld-servers.net
com     nameserver = d.gtld-servers.net
com     nameserver = l.gtld-servers.net
com     nameserver = k.gtld-servers.net
a.gtld-servers.net      internet address = 192.5.6.30
b.gtld-servers.net      internet address = 192.33.14.30
c.gtld-servers.net      internet address = 192.26.92.30
d.gtld-servers.net      internet address = 192.31.80.30
e.gtld-servers.net      internet address = 192.12.94.30
f.gtld-servers.net      internet address = 192.35.51.30
g.gtld-servers.net      internet address = 192.42.93.30
h.gtld-servers.net      internet address = 192.54.112.30
i.gtld-servers.net      internet address = 192.43.172.30
j.gtld-servers.net      internet address = 192.48.79.30
k.gtld-servers.net      internet address = 192.52.178.30
l.gtld-servers.net      internet address = 192.41.162.30
m.gtld-servers.net      internet address = 192.55.83.30
a.gtld-servers.net      AAAA IPv6 address = 2001:503:a83e::2:30
b.gtld-servers.net      AAAA IPv6 address = 2001:503:231d::2:30

接着再问baidu.com …… 以此类推

nslookup -qt=TXT DNS服务器里的txt
PS C:\Users\leexi> nslookup -qt=TXT cubicy.icu
服务器:  dns1.zju.edu.cn
Address:  10.10.0.21
非权威应答:
cubicy.icu      text =
        "google-site-verification=1fhjV2lfeA6mIocyby2UVcZ8bC8o8NpJreyw1OLPDUY"
cubicy.icu      text =
        "v=spf1 -all"
cubicy.icu      text =    "5aSx5oGL44K944Oz44Kw5rKi5bGx6IG044GE44GmCuazo+OBhOOBpuOBsOOBi+OCiuOBruengeOBr+OCguOBhgrmjajjgabjgZ/jgYTjgYvjgokK5b+Y44KM44Gf44GE44GL44KJCuOCguOBhiDlkJvjga7jgZPjgajjgarjgpPjgaYK5b+Y44KM44Gh44KD44GG44GL44KJ44GtICAKU1VLSVNVS0lTVUtJU1VLSVNVS0k="
cubicy.icu      nameserver = sam.ns.cloudflare.com
cubicy.icu      nameserver = itzel.ns.cloudflare.com
sam.ns.cloudflare.com   internet address = 173.245.59.141
sam.ns.cloudflare.com   internet address = 108.162.193.141
sam.ns.cloudflare.com   internet address = 172.64.33.141

其中 google-site-verification=1fhjV2lfeA6mIocyby2UVcZ8bC8o8NpJreyw1OLPDUY 是google用来鉴定的

PS C:\Users\leexi> nslookup -qt=TXT cubicy.icu
服务器:  dns1.zju.edu.cn
Address:  10.10.0.21

非权威应答:
cubicy.icu      text =

        "google-site-verification=1fhjV2lfeA6mIocyby2UVcZ8bC8o8NpJreyw1OLPDUY"
cubicy.icu      text =

        "v=spf1 -all"
cubicy.icu      text =

        "5aSx5oGL44K944Oz44Kw5rKi5bGx6IG044GE44GmCuazo+OBhOOBpuOBsOOBi+OCiuOBruengeOBr+OCguOBhgrmjajjgabjgZ/jgYTjgYvjgokK5b+Y44KM44Gf44GE44GL44KJCuOCguOBhiDlkJvjga7jgZPjgajjgarjgpPjgaYK5b+Y44KM44Gh44KD44GG44GL44KJ44GtICAKU1VLSVNVS0lTVUtJU1VLSVNVS0k="

icu     nameserver = b.nic.icu
icu     nameserver = a.nic.icu
icu     nameserver = c.nic.icu
icu     nameserver = d.nic.icu
d.nic.icu       internet address = 212.18.249.108
a.nic.icu       internet address = 194.169.218.108
b.nic.icu       internet address = 185.24.64.108
PS C:\Users\leexi>

tracert

  • 排除网络故障

ttl:

用完了,丢包

tracert - ttl设成1,第一个路由器会报告 - ttl->2 - ……

代理:

正向代理: VPN:Virtual Private Network

反向代理: 隐藏真实IP,Cloudflare帮网站代发

CDN/防火墙

内网穿透

HTTP协议:(超文本传输协议)

  1. 应用层的协议,基于TCP(http3,UDP+rules)
  2. 封装
  3. 无状态,前后的对话之间没有关系,需要应用层自行维护
  4. 典型的方案:Cookie/Session/Token Cookie:浏览器上;Session:服务器上;Token有标识,知道你处于什么上下文

Cookie Editor : 插件,查看cookie

Get请求:纯文本 ?后面请求的参数

后端技术栈 Node.js PHP Python Ruby

CTF 用逻辑漏洞欺骗后端

逻辑漏洞:if money!=0 then money-=price. What if money=-1 ?

if a == 1 写成 if a = 1

注入漏洞:混淆了数据和代码,把自己的恶意代码插入数据里

拼接代码非常危

例如printf("%d", _____)

正常输入:1 2 3

恶意输入:1); system("shutdown -s -t 0"); //

就变成了printf("%d", 1); system("shutdown -s -t 0"); //)

爆了

SQL

php js sql // html/css

MySQL

google :online compiler

一开始定义了一个表 --类型在后面,primary key 主键,唯一,可以快速索引

-- create(
CREATE TABLE EMPLOYEE (
  empId INTEGER PRIMARY KEY,

  name TEXT NOT NULL,
  dept TEXT NOT NULL
);

-- insert
INSERT INTO EMPLOYEE VALUES (0001, 'Clark', 'Sales');
INSERT INTO EMPLOYEE VALUES (0002, 'Dave', 'Accounting');
INSERT INTO EMPLOYEE VALUES (0003, 'Ava', 'Sales');

-- fetch 
SELECT * FROM EMPLOYEE WHERE dept = 'Sales';
SELECT 1 As 'mynum';

Cookie 包含用户ID的Cookie到客户端 Session

Cookie:存储在客户端的小型文本文件,通常用于存储用户的偏好设置、身份验证信息等。

- 示例:用户登录后,服务器发送一个包含用户ID的Cookie到客户端,客户端在后续请求中自动包含该Cookie,以便服务器识别用户。

- Cookie劫持:攻击者通过XSS攻击或其他手段获取用户的Cookie,从而冒充用户身份。

Session:存储在服务器端的临时数据存储区域,通常用于存储用户的会话状态信息。

  • 示例:用户登录后,服务器创建一个Session,并将Session ID通过Cookie发送给客户端。客户端在后续请求中包含该Session ID,服务器根据Session ID查找对应的Session数据。

  • 如果服务器被攻破,Session中就可能有一些敏感信息。

逻辑漏洞

a==1&&a==2

html:网页的骨架,嵌套 css:样式

区分: 名字不一样,div/hr class="?"

body{ //整个网页
    font-family:Arial,sans-serif;//字体
    margin
    padding
    background-color=###f4f4f4;
}

nav ul{

} .intro{ //所有有class的都可以

}

JavaScript 交互

TypeScript(加强类型)

强大的类型系统

node.js 不需要去浏览器,可以有自己的开发环境

同源策略限制:

请求:同源,e.g.https:// | /域名

跨域:加一个 /api/ 进行转发

Lab : 使用BurpSuite 进行抓包

Burpsuite实现抓包(http、https)_burpsuite抓包本地请求-CSDN博客

我想抓取的是学在浙大,是https
1. 先按照http设置代理, 因为我的电脑已经连了VPN,端口被占了,所以需要修改端口的设置.
- 解决方法
1. 配置 Burp Suite 使用其他地址
你可以配置Burp Suite使用你机器上的其他IP地址。步骤如下:
打开 Burp Suite。 进入 Proxy 标签,然后选择 Proxy Settings 子标签。
Proxy Listeners 部分,点击 Add 按钮。
在弹出的对话框中,将 Bind to port 设为你需要的端口(例如 8081),将 Bind to address 设置为 All interfaces 或你机器的具体IP地址。
点击 OK
2. 配置浏览器使用新地址和端口
打开你使用的浏览器(例如 Chrome)。
进入代理设置,根据你的操作系统设置代理:
Windows:
1. 打开设置,搜索并选择 网络和Internet 选项
2. 在 代理服务器 部分,填写你在Burp Suite中设置的IP地址和端口(例如:192.168.1.100:8081)。
3. 确认代理链配置
如果你通过另一个代理服务器访问外部网络,需要在Burp Suite中配置该代理:
在 Burp Suite 中,进入 Network 标签,然后选择 Connections 子标签。
Outgoing proxy servers 部分,点击 Add
配置你的上游代理服务器信息(IP地址、端口、认证等),并点击 OK
4. 测试连接
配置完成后,确保浏览器和Burp Suite都能正确连接并进行抓包。可以访问一个简单的网页进行测试,查看Burp Suite的HTTP history是否有记录。 2. 启动代理服务器,关闭拦截

Comments