一:靶场下载及搭建
xss-labs下载地址:xss-labs:xss 跨站漏洞平台 - GitCode
phpstudy集成开发环境安装:[ 靶场环境篇 ] phpstudy 集成环境安装教程(特别详细)_phpstudy集成环境-CSDN博客
我们下载完之后,就可以进行xss-labs-master的搭建,我本人下载的phpstudy是2018年版的
将xss-labs-master安装完之后,放到 PHPTutorial\WWW 此目录下,我们原本下载的xss-labs-master,我们可以将文件名改成xss-labs,便于我们做题时的搜索
对于新版本的phpstudy来说,我们可以将xss-labs-master放到phpstudy_pro\WWW此目录下。
二:通关记录
访问本地配置的xss-labs
第一关(JS弹窗函数alert())
点击图片,进入第一关
xss漏洞执行是通过向web页面插入JavaScript恶意代码,待用户浏览该页面时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
我们将name作为参数,通过修改它看看页面是否变化----------->>>可以看到从test变成了MJ
在name参数上尝试用简单的JS代码进行XSS攻击,看到下面代码执行成功
?name=<script>alert(1)</script>
第二关(input闭合绕过)
我们还是执行简单JS代码试试看,发现没有相关提示
?keyword=<script>alert(1)</script>
先查看网页源代码,看看有什么提示,可以看到我们执行的语句<>被过滤
查看一下源码,发现出现了一个htmlspecialchars()函数,
当你不知道该函数的用法时,我们进行搜索该函数的用法
我们尝试从标签中的属性进行突破,将属性中的>
和<
进行闭合
"><script>alert(1)</script>//"
第三关(onclick事件绕过)
首先,在此窗口下输入常规的JS代码
接着将上一关的通关代码进行试试,查看网页前端源代码
查看网页源代码,发现两个地方都进行了html实体化
但是htmlspecialchars函数只针对<>大于小于号进行html实体化,我们还可以利用其他方法进行xss注入,这里我们可以利用onclick鼠标点击,出现弹窗即可
' onclick=alert(1) '
点击搜索之后,再点击搜索框里面内容,触发click点击
第四关(<>过滤和onclick事件)
我们将上一关通过的payload进行尝试,见图下
见第四关的原代码,发现进行了 < 和 > 的过滤,还进行了html实体化
还是使用之前的input框的onclick点击事件来绕过,并把单引号替换成双引号
" onclick=alert(1)//
点击搜索后,再点击搜索框,插入语句成功
第五关(标签绕过)
将上一关通过的payload尝试在第五关,查看网页源代码,发现对onclick进行了过滤,
我们尝试换<a></a>标签绕过,使用JS伪协议( javascript:alert(1) )绕过,简单说就是把javascript: 后面的代码当成 javascript来执行
"><a href=javascript:alert(1)>11</a>//
再点击蓝色的11
第六关(大小写绕过)
将上一关的payload进行尝试,发现对href标签也进行了过滤
查看源代码之后,发现对多种标签进行过滤
我们尝试大小写绕过
"><scriPt>alert(1)</script>
第七关(双写绕过)
将上一关通关payload进行尝试,查看网页源代码,发现直接把script , on , href都替换为空了
我们尝试进行双写绕过
"><scscriptript>alert(1)</scscriptript>
第八关(url编码绕过)
我们依旧用上一关的payload进行尝试,查看网页源代码,发现该过滤的基本都过滤了,但是输入的内容在a标签里面,href可以自动解码html实体编码,直接试试编码script中的r,发现成功绕过
javascript:alert(1)
第九关(合法url格式)
a标签中,显示 ”您的链接不合法?有没有!“ ,我们查一下合法的链接格式,查到合法的URL格式: http(s)://: / ?# 1.协议名:http 或 https 协议; 所以我们猜测应该至少含有 http://:,我们再次尝试JS伪协议+/http://发现过滤了script,使用上关payload+ http://: ,发现成功绕过。
http:// 前必须要含有注释//,不然不成功
javascript:alert(1)//http://
第十关(标签隐藏+onclick事件)
第十关,发现没有文本框可以上传JS代码
查看网页源代码,发现文本框可能被隐藏了
那通过根据input的name来修改type来看是否可以显示文本框,修改payload为:
t_link" type='text'>//&t_history" type='text'>//&t_sort=" type='text'>//
修改完成之后,出现文本框
我们可以发现只有t_sort的类型出现改变,说明传参点就在这里,查看源代码
使用onclick事件,发现成功绕过
&t_sort=" type='text' onclick=javascript:alert(12)>//
标签:xss,记录,alert,labs,onclick,绕过,源代码
From: https://blog.csdn.net/2302_78903258/article/details/139513953