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. 非权威应答:缓存,一个电脑上不可能存这么多域名,
  • 缓存有什么问题:可能缺乏时效性,cc98的IP地址突然变了,可能就会返回错误结果
  1. 真正(所谓权威)的流程:
    以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