Sqli-labs

xss 视频

基础概念

Dom 和 Bom

  • Dom (Document Browser Model)和 Bom(Browser Object Model)
    • Bom 代表的浏览器本身
      • Dom 属于 Bom,是一个组成部件(用于 Html 元素处理的)
      • Window 也属于 Bom

下面是浏览器必须实现的标准接口组件

反射、存储、Dom

  • 反射:构建请求参数,向服务器请求——注入参数在 http 请求中,由服务器返回 html 到页面
    • 经过服务器:短暂的经过服务器,可能会被服务器过滤
    • 利用:构造钓鱼链接(包含恶意代码),让其用户访问——向后端请求输出到前端
      • 可以盗取 Cookie
  • 存储:直接存储在服务器数据库中(只要是持久存在的就可以,不一定是数据库)——用户访问页面会执行
    • 直接存储在服务器:可能会被过滤
  • Dom:利用 document 注入到 html 中,不经过服务器,不会被过滤掉

Dom 的相关基础

3burp-xss 使用

3.1 官方站点

burp 官方测试网站(多种漏洞)

3.2 反射型测试

反射型的测试

burp 的 fuzz 测试 xss

(该页面里面有测试页面和 payload)

反射型 xss 测试站点

payload页面

可以用到 burp 的 intruder 中测试

4Dom-Attribute

写 html 代码就是对 dom 的操作

  • dom 可以操作 html 中的每一个标签
  • attributes 可以操作对应标签中的属性(包括触发事件,但不止是)

dom文档

选择事件

Dom 的基础操作

1
2
3
4
5
6
1:a 的引用是第一个按钮标签的 Dom 对象(对 a 操作等于对标签操作)
var a = document.getElementsByTagName("BUTTON")[0];
2:获取a属性名为:onclick的值:即把myFunction()字符串赋值给 x
var x = a.attributes.getNamedItem("onclick").value;
3:把 id 为demo1 的标签的文本内容换为 x——即bbb 替换为 x.value
document.getElementById("demo1").innerHTML = x;

因此最开始页面如下:

点击 Try it 会触发 button 的 onclick——触发 myFunction——因此把 bbb 标签的赋值改变

变成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<body>
<p> Click the button to get the value of onclic attribute of the button element.</p>

<button onclick="myFunction()">Try it</button>
<button onclick="btn()">btn</button>
<p id="demo"> aaa </p>
<p id="demo1">bbb</p>

<script>
function myFunction(){
var a = document.getElementsByTagName("button")[0];
//var x = a.attributes.getNamedItem("onclick").value;
var x = a.getAttribute("onclick");
document.getElementById("demo").innerHTML = x;
}
function btn(){
var a = document.getElementsByTagName("button")[1];
//var x = a.attributes.getNamedItem("onclick").value;
var x = a.getAttribute("onclick");
document.getElementById("demo1").innerHTML = x;
}
</script>


</body>


</html>

5Dom-Document

Xss 攻击流程