xss-labs漏洞学习

xss漏洞原理

0、前端知识

HTML 定义了网页的内容;
CSS 描述了网页的布局;
JavaScript 控制了网页的行为;
HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。
Javascript 脚本代码可被放置在 HTML 页面的 <body> 和 <head> 部分中。

1、xss漏洞原理

输出类的一个函数所造成的漏洞,调试一些内容输出的时候,这些内容受我们控制,我们将其替换成js代码,js弄到浏览器去访问的时候就被执行。总之就是用js代码进行一些敏感操作。当应用程序没有对用户提交的内容进行验证和重新编码,而是直接呈现给网站的访问者时,就可能会触发XSS攻击。

区别:
发送一次带XSS代码的请求,若只能在当前返回的数据包里发现XSS代码,则是反射型;
若以后这个页面的返回包里都会有XSS代码,则是存储型;
若在返回包里找不到XSS代码,则是DOM型。

在这里插入图片描述

第一关:

在这里插入图片描述

http://xss/level1.php?name=<Script>alert(1)</Script>

网页交互的信息提示框:
alter()
alert 方法有一个参数,即希望对用户显示的文本字符串。
在这里插入图片描述

在这里插入图片描述

第二关:

1"><ScRipt>alert(1)</ScRipt>

在这里插入图片描述在这里插入图片描述函数htmlspecialchars()
把预定义的字符转换为 HTML 实体。
因为在 HTML 中,某些字符是预留的。如在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签(无法在网页中显示)。如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。
htmlspecialchars()编码 “<” “>”
<代表小于号(<)
>代表大于符号(>)
≤表示小于或等于符号(<=)
≥表示大于或等于符号(>=)
在这里插入图片描述
上图调试器内容就是htmlspecailchars()起了作用,将<>进行实体化。但是插入到value参数值中的代码并没有被编码而是直接原样返回的。
在这里插入图片描述

但是问题是这里的js代码在标签属性值中,浏览器是无法执行的。
既然上面的恶意代码被编码了,那么只能从属性值中的恶意代码处进行突破。
笔记:
1.大部分HTML标签都可以添加属性,常见的属性有宽度、高度、颜色、背景、字体等。

2.HTML属性一般都出现在HTML标签中,是HTML标签的一部分。
3.标签可以有属性,它包含了额外的信息,属性的值一定要在双引号中。

4.标签可以拥有多个属性。标签可以拥有多个属性。

5.属性由属性名和值成对出现。

6.语法格式<标签名属性名1=“属性值"属性名2=“属性值”…”>……

<.......value="<script>alert(1)</script>">

将属性的引号和标签先闭合

输入:

1"><ScRipt>alert(1)</ScRipt>

也即是:

<......value="1"><ScRipt>alert(1)</ScRipt>">

在这里插入图片描述

在这里插入图片描述

第三关:

' onclick ='javascript:alert(1)'//

在这里插入图片描述由上图可知:
在这里插入图片描述这里两处的值都被实体化了。。。

通过标签的一些特殊事件来执行js代码
方法一、使用焦点事件
onfocus 事件在对象获得焦点时发生。
onfocus 通常用于 , , 和.

' onfocus ='javascript:alert(1)'//

在这里插入图片描述

方法二、
在标签中填写 onclick 事件调用函数时,不是 οnclick=函数名, 而是 οnclick=函数名+()

’ onclick =‘javascript:alert(1)’//
在这里插入图片描述

第四关:

在这里插入图片描述

" onfocus ="javascript:alert(1)"//
"onclick ="javascript:alert(1)"//

在这里插入图片描述

第五关:

在这里插入图片描述scrip给变成了scr_ipt

" onfocus =“javascript:alert(1)”//
在这里插入图片描述onfocus变成了o_nfocus变成了。还有onclick—>o_nclick

此处既然无法通过

"></input><a href='javascript:alert(1)'>asd</a>//

在这里插入图片描述

?keyword="><a href=javascript:alert(1)>xss</a>//

在这里插入图片描述

第六关:

在这里插入图片描述过滤
这里可以使用大小写绕过

?keyword="><a hRef=javascript:alert(1)>xss</a>//

在这里插入图片描述在这里插入图片描述

第七关:

在这里插入图片描述

?keyword=">xss//
双写绕过
在这里插入图片描述

第八关:

在这里插入图片描述

编码绕过
javascript:aert(1)=

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

在这里插入图片描述

第九关:

在这里插入图片描述
只是要求要有链接,我们添上,然后加个注释符。

javascrip&#x74;:alert(/xss/)//http://www.baidu.com

在这里插入图片描述

第十关:

在这里插入图片描述

发现和之前有点不一样的是,多了一个参数$t_sort,而且有三个隐藏表单,但只有t_sort能传参这个参数,观察代码可以看到,<和>都被过滤了。我们可以利用这个参数。页面中没有触发事件框,所以type="text"构造一个文本框

1&t_sort=" onclick=alert(1) type="text

在这里插入图片描述

第十一关:

在这里插入图片描述$_SERVER[‘HTTP_REFERER’] #链接到当前页面的前一页面的 URL 地址,预定义服务器变量可以判断来路,即一般用于判断浏览者是从哪里点击链接跳到本页面的,即所说的来路,还可以通过判断来路来防止盗链。
php 判断来路,PHP获取referer判断来路防止非法访问
使用php伪造referer的方法
当浏览器向web服务器发送请求时,一般会带上referer,告诉服务器我是从哪个页面链接来的,服务器借此可以获得一些信息用于处理,当然这个referer可以伪造。http_referer是请求头(header)的一部分,当浏览器向web服务器发送请求的时候,一般会带上referer。
所以我们可以添加referer:

referer:"type="text" onclick="alert('xss')

" type=‘text’ οnclick=‘javascript:alert(1)’>//

第十二关:

和第十一关差不多
在这里插入图片描述

在这里插入图片描述

第十三关:

在这里插入图片描述
cookie
在这里插入图片描述

" type='text' onclick='javascript:alert(1)'>//

第十五关:

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值