xss-labs靶场level1~5

参考资料:

XSS常见的触发标签_可以触发xss的标签_H3rmesk1t的博客-CSDN博客

基础知识:

XSS漏洞的定义:

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页面时,嵌入Web里面的JS代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

XSS漏洞的原理:

利用我们知道的方法,向web页面插入Js代码,让Js代码可以被浏览器执行,访问该页面的用户则被攻击

三大类型:

反射型xss 的原理为:攻击者在url 中插入xss 代码,服务端将url 中的xss 代码输出到页面上,攻击者将带有xss 代码的 url发送给用户,用户打开后收到攻击。

存储型XSS又称持久型XSS,攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性。攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中。当用户进行正常访问时,触发XSS代码。

DOM型XSS全称Document Object Model,使用DOM动态访问更新文档的内容、结构及样式。 HTML标签都是节点,节点组成了节点树。通过HTML DOM 可以对树上的所有节点进行修改。服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。
 

靶场实战

level 1

知识:JS弹窗函数alert()

查看源代码,看到默认name参数为test,回显了payload的长度

xss-labs靶场level1~5_第1张图片

参数值直接放到

这个标签里面了,判断为反射型xss

xss-labs靶场level1~5_第2张图片

查看该关卡源代码,单纯插入即可

xss-labs靶场level1~5_第3张图片

 

level 2 

知识:闭合绕过 

xss-labs靶场level1~5_第4张图片

查看源代码发现被htmlspecialchars处理过了

xss-labs靶场level1~5_第5张图片

  htmlspecialchars的作用xss-labs靶场level1~5_第6张图片

可以看到在

标签这里他将‘<’ 和 ’>‘ 进行了编码,而在输入  这个标签中,他是没有被编码的,但是可以看到我们的注入语句被放到了value 值当中,这样浏览器是不会执行我们的注入语句的

xss-labs靶场level1~5_第7张图片

 我们只需要闭合掉双引号即可,构造payload:

这里的"是为了与value的双引号进行闭合,然后 > 这个符号是为了闭合这个标签从而使得后面的成为HTML中的另一个标签而可以被浏览器执行,// 则是将后面的 "> 进行注释

">//

除了使用这种闭合方式也可以使用其他方法,比如以下几种

1、当鼠标经过输入框时就会弹出弹窗

" onmouseover=alert(1)//

2、当鼠标点击输入框时就会弹出弹窗

" onclick=alert(1)//

level 3

知识:onfocus可以绕过html实体化

xss-labs靶场level1~5_第8张图片

发现这里不仅是单引号闭合,而且符号也被实体化了

看看源码果然如此 

xss-labs靶场level1~5_第9张图片

我们可以利用onfocus事件绕过

xss-labs靶场level1~5_第10张图片

onfocus事件在元素获得焦点时触发,最常与 为例,标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

' onfocus=javascript:alert() //

level 4

xss-labs靶场level1~5_第11张图片

这里是双引号闭合,标签,所以我们还能继续利用onfocus事件,构建payload

" onfocus=javascript:alert() //

查看源代码,用str_replace() 函数替换过滤了<>

xss-labs靶场level1~5_第12张图片

 

level 5

知识:java伪协议_javascript伪协议是什么?_隅隅隅的博客-CSDN博客
可以插入标签(如标签的href属性)达到js执行的效果,前提是闭合号<"">没失效

输入我们的老payload发现这里on被替换成了o_n

xss-labs靶场level1~5_第13张图片

 先看一下这关的源码

xss-labs靶场level1~5_第14张图片

过滤了js的标签还有onfocus事件,虽然str_replace不区分大小写,但是有小写字母转化函数,所以就不能用大小写法来绕过过滤了,只能新找一个方法进行xss注入 

这里可以用伪协议来进行构造

"> 1//

href属性的意思是 当标签被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码。这里的javascript: 就是javascript伪协议,就是将javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。

之后点击1,触发a标签href属性即可

你可能感兴趣的:(刷题笔记,xss,前端,安全,经验分享,web安全)