一:靶场下载及搭建

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,发现成功绕过

javasc&#114;ipt:alert(1)

第九关(合法url格式)

a标签中,显示 ”您的链接不合法?有没有!“ ,我们查一下合法的链接格式,查到合法的URL格式: http(s)://: / ?# 1.协议名:http 或 https 协议; 所以我们猜测应该至少含有 http://:,我们再次尝试JS伪协议+/http://发现过滤了script,使用上关payload+ http://:  ,发现成功绕过。

http:// 前必须要含有注释//,不然不成功

javasc&#114;ipt: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)>//

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部