xss学习及xss-lab解题记录
什么是XSS(跨站脚本攻击)
SQL注入是服务端将用户输入的数据当成SQL代码去执行
XSS可以理解为服务端把用户输入的数据当成前端代码去执行
前端代码->主要是js代码
两个关键条件:
第一个是用户能够控制输入
第二个是原本程序要执行的代码,拼接了用户输入的数据
XSS主要拼接什么
SQL注入拼接的是操作数据库的SQL语句。
XSS拼接的是网页的HTML代码
一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句
(总结:XSS就是拼接恶意的HTML)
XSS的作用
盗取Cookie(用的最频繁的)(cookie相当于身份证)
获取内网IP(攻击内网)
获取浏览器保存的明文密码
截取网页屏幕
网页上的键盘记录
分类
反射型xss(提交的数据成功的实现了xss,但是仅仅是对你这次访问产生了影响,是非持久型攻击)
存储型xss(提交的数据成功的实现了xss,存入了数据库,别人访问这个页面会自动触发)(留言栏)(工单)(表单)
DOM型xss(比较复杂)
常用语句
(若成功弹窗,则js代码可以执行)
什么是dom型xss
DOM-based XSs漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显后页面的一部分,DOM中有很多对象,其中一些是用户可以操纵的,如uRl,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM-based XSS漏洞。
dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。
通过Js去对网页进行修改,变化执行
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
level 1(url传参)
查看源代码
使name等于
<script>alert(1)</script>
level 2(输入框注入)
输一个语句,发现不行
查看源代码
发现关键点
红色框上面部分被转义了,没有什么绕过方法,
嵌套一个反标签符号
"><script>alert()</script><"
level 3(事件注入)
输入上面的payload,发现被转义了
加入函数
在JavaScript中有一个函数onfocus(),用于输入框input,select,a标签获得焦点的事件
' onfocus=javascript:alert() '
再点击这个input框,使其获得焦点,触发onfocus事件
level 4(引号类型)
没有转义
切换payload为双引号即可
" onfocus=javascript:alert() "
level 5(a标签注入)
被强制转换了,且引号重复了
<a href="javascript:alert();">xx</a>
加个 "> 和 "< .
"><a href="javascript:alert();">xx</a><"
可以发现代码变成
xx"><"
发现页面多了个标签,此时既可以点击此标签
level 6(大小写绕过)
将href改成HREF
level 7(双拼写)
href没了
双拼绕过
" ><sscriptcript>alert()</sscriptcript>< "
level 8(Unicode编码)
利用href的隐藏属性自动Unicode解码,插入一段js伪协议
javascript:alert()-->
javascript:alert()
level 9(指定字符绕过)
链接不合法
level 10(属性修改)
看源码
level10.php?t_sort=" onfocus="javascript:alert()" type="
level 11(Referer)
被转义了
页面上没有任何可以输入输出的地方,不过通过“检查”来查看渲染结构以后发现有4个隐藏的输入框,t_ref会把我们数据包中的referer参数传入
htmlspecialchars():一个PHP函数,用于将特殊字符转换为HTML实体。这个函数通常用于防止跨站脚本(XSS)攻击。
$_SERVER['HTTP_REFERER'] :链接到当前页面的前一页面的 URL 地址。(referer,推荐人)
经测试,它不会过滤<和>
Referer:click me" type="button" onfocus="alert()
level 12(User-Agent)
f12
用burpsuip抓包,发现t_ua和User-Agent的内容一样
click it" type="button" onmouseover="alert()
level 13(Cookie)
猜用cookie
Cookie: user=" onfocus="javascript:alert()" type="text" "
弄成这样也行
xss学习及xss-lab解题记录的更多相关文章
- Web For Pentester 学习笔记 - XSS篇
XSS学习还是比较抽象,主要最近授权测的某基金里OA的XSS真的实在是太多了,感觉都可以做一个大合集了,加上最近看到大佬的博客,所以这里我也写一个简单的小靶场手册,顺带着也帮助自己把所有XSS的方式给 ...
- Web安全学习笔记 XSS上
Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...
- 【转载】XSS学习笔记
XSS的分类 非持久型 非持久型XSS也称反射型XSS.具体原理就是当用户提交一段代码的时候,服务端会马上返回页面的执行结果.那么当攻击者让被攻击者提交一个伪装好的带有恶意代码的链接时,服务端也会立刻 ...
- 跨站脚本攻击xss学习
0.认识跨站脚本 举一个跨站脚本的简单例子. 假设一个页面将用户输入的参数直接显示到页面之中.(比如有如下代码) 在实际的浏览器中,在param中提交的参数正常会展示到页面之中.比如输入下面的URL: ...
- 第四次:渗透练习,xss学习
xss学习 一.学习目的 初步了解xss攻击,不包括(DOM类型) 二.附加说明 1.xss介绍 https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/ ...
- 2019-11-20:xss学习笔记
xxe漏洞防御使用开发语言提供的禁用外部实体的方法phplibxml_disable_entity_loader(true); 卢兰奇对象模型,bom由于现代浏览器实现了js交互性方面的相同方法和属性 ...
- PostMessage xss学习和挖掘
PostMessage xss很有趣,在国外出现了很多次,国内src/众测从没遇到过,挖到过.可能境界还不够,有机会再去试试.好几年前记得心血来潮学过一次,都是半知半解,后来因为重要性不高,不了了之了 ...
- XSS学习(二)
尝试操作Cookie 创建一个cookie,需要提供cookie的名字,值,过期时间和相关路径等 <?php setcookie('user_id',123); ?> 它的作用是创建一个c ...
- XSS学习(一)
XSS(一) XSS分类 1.反射型XSS 2.持久性XSS 3.DOM型XSS **** 反射型XSS 也称作非持久型,参数型跨站脚本 主要将Payload附加到URL地址参数中 例如: http: ...
- XSS学习小结
一.什么是XSS? XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了. 这里我们主要注 ...
随机推荐
- Qt/C++视频监控拉流显示/各种rtsp/rtmp/http视频流/摄像头采集/视频监控回放/录像存储
一.前言 本视频播放组件陆陆续续写了6年多,一直在持续更新迭代,视频监控行业客户端软件开发首要需求就是拉流显示,比如给定一个rtsp视频流地址,你需要在软件上显示实时画面,其次就是录像保存,再次就是一 ...
- Qt编写安防视频监控系统56-数据库分页
一.前言 在视频监控系统中也需要对日志记录进行查询显示,有时候查询到的记录并不能一页显示完,最好的做成翻页显示,如果所有记录都在一页显示通过滚动条查看,不是很符合用户习惯,比如搜索引擎的记录也都是分页 ...
- JMeter使用指南+实验报告
JMeter使用指南 目录 JMeter使用指南 界面基本配置方法 1.选项里的放大与缩小--缩放字体 2.选项里的选择语言 3.命令行的调出 注意事项 一些指标介绍 1.TCP取样器 2.汇总/聚合 ...
- ElasticSearch接口
DSL语法 DSL为ES过滤数据时的语法,可用于查询.删除等操作 基本构成 默认分页查询,size默认为10.ES查询默认最大文档数量限制为10000,可通过 index.max_result_win ...
- JSON解析的这6种方案,真香!
前言 在 Java 开发中,解析 JSON 是一个非常常见的需求. 不管是和前端交互.调用第三方接口,还是处理配置文件,几乎都绕不开 JSON. 这篇文章总结了6种主流的 JSON 解析方法,希望对你 ...
- echo输出
linux中不免经常使用echo进行输出,或输出到屏幕,或输出到文件.但是使用的时候会发现,在想要输出一些需要转义的字符时,例如\t等,它却原样不动的输出了. 使用man命令查看echo的帮助文档,会 ...
- 关于JetbrainsIDE升级到2024.2版本之后jetbra/ja-netfaliter激活失效不断弹窗的解决方案
1. 原因: jetbra/ja-netfaliter激活的原理是拦截并重定向与Jetbrains账号验证服务器的数据. 2024.2后jetbrains新的安装程序自带了三个区域语言包,其中若选择中 ...
- react 计算衍生数据
import React from 'react' import { connect } from 'react-redux' import TodoList from '../components/ ...
- OA系统的天数该怎样计算
文章首发:https://blog.liuzijian.com/post/oa-system-count-days.html 在开发一些OA系统的过程中,经常能遇到一个问题,就是时长计算,比如请假有请 ...
- Linux部署Python项目
项目部署 项目部署对于操作通常是由运维人员来进行统一管理装配的,但是对于一个开发人员来讲,基础的项目部署还是要会的. 这里我主要讲解python的项目是如何部署的,至于项目哪里来的,这就要看观众如何抉 ...