文章目录
- 第一关
- 第二关
- 第三关
- 第四关
- 第五关
- 第六关
- 第七关
- 第八关
- 第九关
- 第十关
- 通过(xss-labs-master)[]+PHPStudy搭建的XSS靶场1-10关的攻击教程
- 需要下载好XSS靶场源码,导入到phpstudy的WWW目录下
- 攻击主机需要安装BurpSuit、FoxyProxy浏览器插件(便于开启代理,通过BurpSuit抓包)
- FoxyProxy插件配置如下图
- 开始闯关!
第一关
- 第一关可以看到,并没有输入框,那就通过代理抓包,判断请求的类型(GET/POST)
- 打开BurpSuit,然后启用代理
- 打开BurpSuit,然后启用代理
- 刷新页面,查看BurpSuit中的请求包类型以及内容
- 可以看到请求类型是GET请求的,那么请求的字段就会携带在URL中
- 查看URL包含
name=test
,在页面的显示中,也包含了test,则可以直接通过URL进行攻击
- 修改test为攻击代码
<script>alert()</script>
PayLoad:
<script>alert()</script>
第二关
- 第二关可以看到,有一个输入框,可以进行搜索,并且页面上会有显示
- 尝试直接尝试
<script>alert()</script>
- 尝试直接尝试
- 发现行不通,通过F12,查看网页源码
- 可以看到输入的内容赋值给
value
了,那就修改攻击代码,与前面的内容进行配对,后面的内容需要进行注释- 尝试攻击代码
"><script>alert()</script>//
- 尝试攻击代码
PayLoad:
"><script>alert()</script>//
第三关
- 第三关与第二关相同,都有输入框,尝试使用第二关的代码进行攻击
- 发现虽然代码配对成功,但是并没有弹出,尝试换一种方式进行攻击
- 尝试攻击代码
' onclick=javascript:alert() '
- 尝试攻击代码
- F12查看源码,发现代码被正常执行。搜索完成后,需要在输入框再点击一下,才能完成弹出
- 在靶机上查看网站后台源码,发现是对关键字进行了过滤,所以使用单引号与前面的符号做配对
PayLoad:
' onclick=javascript:alert() '
第四关
- 第四关页面和第三关很像,尝试使用第三关的攻击代码
- 发现攻击代码并没有被正常执行,出现了一个单引号,换双引号再次尝试
- 发现代码被正常的执行,需要在搜索框再点击一下
PayLoad:
" onclick=javascript:alert() "
第五关
- 可以看到是有输入框的,使用第二关的代码尝试攻击
- 发现关键词
<script>
被过滤替换为了<scr_ipt>
,并且存在溢出,尝试使用a
标签插入连接执行攻击代码- 尝试攻击代码
"></input><a href=javascript:alert()>111</a>//
- 尝试攻击代码
PayLoad:
"></input><a href=javascript:alert()>111</a>//
第六关
-
发现有输入框,尝试使用第五关的攻击代码
-
通过F12发现关键字
href
被过滤替换了,导致链接失效,无法正常执行攻击代码,尝试使用第二关的代码,查看script
是否被过滤
- 发现
script
关键字也被过滤了,将关键字替换为大小写再次尝试- 尝试攻击代码
"><ScRipt>alert()</ScRipt>//
- 尝试攻击代码
- 查看网站后台代码
- 发现是针对小写的关键字做了过滤
- 发现是针对小写的关键字做了过滤
PayLoad:
"><ScRipt>alert()</ScRipt>//
第七关
- 尝试第六关的攻击代码
- 发现攻击失败,关键字
Scrpit
被过滤了,尝试进行标签嵌套- 攻击代码
"><ScscriptRipt>alert()</ScscriptRipt>//
- 攻击代码
- 查看后台代码,可以看到对关键字进行了过滤
PayLoad:
"><ScscriptRipt>alert()</ScscriptRipt>//
第八关
- 在输入框中输入内容,添加友情链接后,通过F12查看页面源码
- 可以看到输入的内容被写入到了链接标签中,可以直接尝试弹出窗口
- 尝试攻击代码
javascript:alert()
- 尝试攻击代码
- 发现关键字被过滤了,尝试对关键字重新编码为HTML可以识别的编码
- 使用BurpSuit对攻击代码进行重编码
- 使用BurpSuit对攻击代码进行重编码
- 输入重新编码后的代码
- 可以看到重新编码的代买被翻译成了正确的弹出窗口脚本,点击链接完成攻击
PayLoad:源码
javascript:alert()
,重新编译后的代码javascript:alert()
第九关
-
发现与第八关页面相似,直接尝试使用第八关的攻击代码
-
发现链接标签中,并不是输入重编码后的代码,而是被替换为不可识别的URL
- 判断可能是对URL的格式做了一些限制,尝试增加
http://
- 判断可能是对URL的格式做了一些限制,尝试增加
-
点击链接,成功
PayLoad:重新编译后的代码
javascript:alert()//http://
第十关
- 发现没有输入框,通过F12查看网页源码
- 发现有三个隐藏的标签,没有输入的地方,就在URL中,尝试将隐藏标签显示出来
- 攻击代码
&t_sort=111" onclick=javascript:alert() type="text"
- 攻击代码
- 点击一下输入框,成功
PayLoad:
&t_sort=111" onclick=javascript:alert() type="text"
以上内容均属原创,如有不详或错误,敬请指出。