一、网页元素标签的属性
id和class
(1)id全局唯一; 可以利用document.getElementById('div')来抓取
![](https://i-blog.csdnimg.cn/blog_migrate/466b4724293a1ba67ddd6935819307a8.png)
(2)class全局不唯一;我们需要通过document.getElementsByClassName('div')[0]; ,添加数
组来抓取,注意当class内容较多时,我们不添数组抓取时会抓取不到内容,只有通过添加数
组下标之后才可以抓取到我们需要的内容。
![](https://i-blog.csdnimg.cn/blog_migrate/6683d970c82e69a8b286a812b65b248a.png)
(3)以下使我们抓取到的内容
![](https://i-blog.csdnimg.cn/blog_migrate/94d3f72f5c00c76c097f33a296d82367.png)
2.tabindex
(1)tabindx:按下table按键能否选中某个元素
(2)input元素自带有tabindex这个属性。
(3)而我们的<p></p>标签不自带 tabindex这个属性,所以当我们按下table键无法选中这个属
性。
![](https://i-blog.csdnimg.cn/blog_migrate/39076b6bbd48b41150d8173fe2cbce02.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd04cfde592eb00c9c26342b4bce0b4c.png)
(4)当我们想要让<p></p>标签具有被table键选中的属性我们需要添加tabindex="0"
![](https://i-blog.csdnimg.cn/blog_migrate/ebcb820d1215e5c51bb4f3b0932ff11c.png)
当我们按下table键时就会被选中
![](https://i-blog.csdnimg.cn/blog_migrate/72c4c293a47ec4bd1879a8bf1e6787c1.png)
3.style
style样式分为三种:
(1)行样式
(2)引用样式
(3)css样式
一般<p style="color: red;">hello</p>行的样式生效
二、HTML字符编码(HTML实体编码)
实体编码分为两种,一般是先转换成ASCLL编码,在转成我们需要的十进制或者十六进制编码
(1)十进制编码
<p>hello</p>
<!-- 等同于 -->
十进制
<p>hello</p>
(2) 十六进制编码,注意一般十六进制编码都带有X
<p>hello</p>
<!-- 等同于 -->
十六进制
<p>hello</p>
一般比较重要的字符编码
(1)<: < 可以记忆为less
(2)>: > 可以记忆为grow
好处在于我们我们使用<script>alret(1)</script>会产生一个xss漏洞如下
<script>alret(1)</script>
![](https://i-blog.csdnimg.cn/blog_migrate/cfd7b6cff45aff7d6a4efaaaf334d2bb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e97d573d94a0aa847d802205ddcd4a7d.png)
我们可以通过字符编码进行防止
<script>alret(1)</script>
![](https://i-blog.csdnimg.cn/blog_migrate/a994f993de99507ba6b46a8f51effe6d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56b07a66a47acb75af578186d3784882.png)
(3)": "
(4)': '
(5)空格:  
3.实体编码的意义在于我们可以通过实体编码来通过waf绕过
4.img标签xss漏洞
<img src="图片链接" onerror=alret(1) alt="">
当我们的src链接的图片不存在的时候我们会触发后面的oneerror=alret(1)这个xss漏洞弹窗
5.案例分析
<?php
header('X-XSS-Protection: 0');
$xss = isset($_GET['xss'])? $_GET['xss'] : '';
$xss = str_replace(array("(",")","&","\\","<",">","'"),'',$xss);
echo "<img src=\"{$xss}\">";
?>
$xss = str_replace(array("(",")","&","\\","<",">","'"),'',$xss)
以上是为了限制这些字符将其转化为空,str_replace是转化
(1)限制"("")"是为了防止xss漏洞
(2)限制“&”是为了防止实体编码被转译
(3)限制“\\”是为了限制undefined编码
(4)限制“<”“>”是为了不让<script>标签不会被转译
(5)限制“‘ ”是当我们使用到英文比如<script>alret('abc')</script>,不让其执行
6.对于5这个解决方法,综合4这个漏洞我们可以在地址栏输入
xss=aaa"%20oneeeor="alret(1)
其实就是相当于
<img src="aaa" onerror="alret(1)">
//相当于无门在aaa后面加了一个",让src="aaa"成为一对,之后在onerror="加入一个"使其双引号成对出现,组成onerror="alret(1)",使其出现绕过
这时并没有出现弹窗,应为有()限制
![](https://i-blog.csdnimg.cn/blog_migrate/bf4391b712779f58a8edf031914ecc4a.png)
之后通过”’“来绕过"(" ")"的限制
xss=aaa"%20onerror="alret'1'
![](https://i-blog.csdnimg.cn/blog_migrate/a11e36a1b12bbe0f966a98d4058dc94d.png)
三、DNS
url的组成部分
https://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#anchor
DNS
(1)A:地址记录,返回域名指向的IP地址
(2)NS:域名服务记录,返回保存下一级域名信息的服务器地址。记录只能设置为域名,不能设置
为IP地址
(3)MX:邮件记录,返回接受电子邮件的服务器地址。
(4)CNAME:规范名称记录,返回另一个域名,既当前查询的域名是另外一个域名的跳转
(5)PTR:逆向查询记录,只用于IP地址查询域名
DNS的解析流程:
在解析域名时,刚开始我们打开浏览器,输入我们的需要查找的域名,其先向DNS发送一个解析
请求,先查找的是我们本地的一个DNS解析缓存,如果本地没有的话会查询host文件,如果没有
会查找本地的路由器(用DHCP来获取,会自动获取一个DNS的地址,其内置了根域服务器的地
址根域会告诉你怎么查,比如先去找com,再去找百度,百度查询后会返回给他,之后返回给主
机。注意递归查询(别人查询好之后返回给你的)迭代查询(别人告诉你怎么去查,需要你自己去
查询),查询完成后当我们知道地址之后,需要建立一个可靠稳定的连接也就是tcp连接(三次握
手),建立连接后我们需要发送http/https请求,分为request和response请求,请求完成后就
会看到我们的页面是一个长链接,直到断开页面,三次握手才断开。
![](https://i-blog.csdnimg.cn/blog_migrate/f7304354dd0c7ffd17dd04be12a3ba1f.png)
四、https加密传输的过程
首先客户端和服务端先进行一个三次握手的连接,之后客户端会产生一个随机数和密码套件列表,之后我们的服务端也会产生一个随机数并且确定好我们密码套件发送给我们的客户端,同时服务端为了证明是其本身会给我们发送一个证书,客户端拿到证书就会去校验,客户端发过来的这个证书包括公钥和一些信息,我们的客户端通过hash算法去得到证书的一个哈希值A,同时通过CA公钥(事先已经具有的)来解密这个证书得到一个值B,如果说A不等于B则证明被篡改就断开连接,如果A等于B则证明是服务器发送的,这时我们的客户端会取出我们服务器的公钥将我们的pre-master通过公钥加密传输给我们的服务器,服务器通过私钥解密取出我们的pre-master,这时客户端和服务端都产生了我们的会话密钥(客户端的随机数,服务端的随机数,pre-master),之后客户端和服务端通过会话密钥进行加密通信。
![](https://i-blog.csdnimg.cn/blog_migrate/a9faa54391260b84af19ece9b6ac85b3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0842fe6ce947cdf823f080987842c63d.png)
五、端口号和状态码
端口扫描(kali):
nmap -sS -T4 -Pn 192.168.80.141
一般的端口号
22 ssh
25 smtp(邮件)
67 dhcp
68 dhcp
80 http
443 https
110 pop3
445 共享协议(永恒之蓝)
389 ldap(域控制器,注入漏洞)
3306 mysql
6379 redis
get和post传参
(1)get传参会显示我们的输入的内容
![](https://i-blog.csdnimg.cn/blog_migrate/2cd07d5f96d003fe370646ffe68c8c3b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e6cbab8d7c4e6b8b4ae825d7d77ead89.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f0a38c7c3892b41443bac4c7ae4e1848.png)
![](https://i-blog.csdnimg.cn/blog_migrate/689c99e1ff1ccc0c994d0ef6c03cee93.png)
(2)post传参不会显示我们传参的内容
![](https://i-blog.csdnimg.cn/blog_migrate/0d10b82de3c3d3325fa9fec6a32cc3c4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d4f8f7514d8c03853f50db619647c402.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83790b2174fc645e8a9feea751ca3e2f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62585b808e4a7f5f28b246d623f70943.png)
常见的状态码
(1)200 OK:请求已正常处理。
(2)204 No Content:请求处理成功,但没有任何资源可以返回给客户端。
(3)206 Partial Content:是对资源某一部分的请求
(4)400 Bad Request:服务器端无法理解客户端发送的请求,请求报文中可能存在语法错误。
(5)401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证
(6)403 Forbidden:不允许访问那个资源。该状态码表明对请求资源的访问被服务器拒绝了。(
限,未授权IP等)
(7)404 Not Found:服务器上没有请求的资源。路径错误等。
(8)500 Internal Server Error:内部资源出故障了。
(9)502 badgateway:网关错误,中间件没起来
(10)503 Service Unavailable:表明服务器暂时处于超负载或正在停机维护,无法处理请求。
(11)504 Gateway Time-out:网关超时,服务器配置错误
状态码301、302、303、304、307、308
(1)301、302、303、304、307、308的区别
缓存(永久重定向) | 不缓存(临时重定向) | |
转get | 301 | 302、303 |
方法保持 | 308 | 307 |
![](https://i-blog.csdnimg.cn/blog_migrate/6eefb6c6ee91b4b1f3f1a9ad1a8d6193.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e01f68aaa1063dad055e21fa0c57c7b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/db63a9f8f03cfa50c8c0f864a88b120e.png)
(2)301
301永久重定向,方法从post转为get
![](https://i-blog.csdnimg.cn/blog_migrate/b6ccbf01d03ab083fdf06e8975915133.png)
(3)302
临时重定向,方法从post转换为get,一般用在前后台登录为了安全。
![](https://i-blog.csdnimg.cn/blog_migrate/6744abec8ba85bd4fd8b6687c41101c9.png)
(4)303
和302差不多,都是临时重定向,方法从post转换为get
![](https://i-blog.csdnimg.cn/blog_migrate/d3403ab5182c7e289eef96f84821351e.png)
(5)304
不进行跳转,只使用缓存
![](https://i-blog.csdnimg.cn/blog_migrate/f2a7fb9ed88997899119e33661e9ac5b.png)
(6)307
临时重定向,和302、303最大区别在于跳转的时候传参方式不变
![](https://i-blog.csdnimg.cn/blog_migrate/21f702ed160b8fca838461ecc28705ff.png)
(7)308
永久重定向,跳转时候传参方式不变
![](https://i-blog.csdnimg.cn/blog_migrate/4a9b56bf9fcc4e2352f1459dd6024c2e.png)
六、常见的一些标签xss弹窗漏洞
script标签
<script>alert(1)</script>
![](https://i-blog.csdnimg.cn/blog_migrate/7eab5e86f6605cae2b217db7698f7241.png)
img标签
<img src="错误图片链接" onerror=alert(1) alt="">
![](https://i-blog.csdnimg.cn/blog_migrate/b77ca56473f94c5ec9eca90cbefffe13.png)
a标签
<a href="javascript:alert(1);">aaaa</a>
![](https://i-blog.csdnimg.cn/blog_migrate/671f3126a260ce84fdf4bb8a80885840.png)
svg标签(一般用在正则表达式的一个绕过)
<svg/onload=alert(1)></svg>
![](https://i-blog.csdnimg.cn/blog_migrate/9ce780e769e1d25ad919de5bd7ef8c8f.png)
form标签
<form action="javascript:alert(1)" method="get">
<input type="text" name="username" id="">
<input type="submit" value="submit">
</form>
![](https://i-blog.csdnimg.cn/blog_migrate/6f6582139d1bd7891016cc32f335f0ee.png)
details标签
<details ontoggle="alert(1)" open></details>
![](https://i-blog.csdnimg.cn/blog_migrate/f2bb2b214d2689a519ab5c58e9bc54eb.png)