文章目录
- 前言
- 一、靶场6-10关
- 1、关卡6
- 2、关卡7
- 3、关卡8
- 4、关卡9
- 5、关卡10
- 总结
前言
此文章只用于学习和反思巩固xss攻击知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、靶场6-10关
1、关卡6
发现url、搜索框有可控参数keyword。输入’“<>看看有没有被过滤,看前端代码发现input标签的value值没有过滤’”<>,h2标签内容被实体化了。也测试了script、关于on的onclick、onerror等,也是被过滤了。再试一试上一关的a标签发现href也被过滤了。
但是我们试一试大小写居然绕过了,这一关原来是没有大小写过滤。也就是说前面几关的方法这里用大写就能绕过,这里我随便用了一个。
攻击语句为
"><sCript>alert(1)</sCript>
看源代码也是发现和我们所猜测的一样,看到str_replace函数把敏感xss语句替换为正常字符串。
2、关卡7
这里我们有经验了,直接提交"'<><script>onhref
,看看有没有过滤。发现input标签value值script、on、href不见了,我们初步猜测是把敏感xss攻击语句替换为空了。但是我们学过文件上传漏洞就知道有双写后缀名绕过。因为后台管理员只过滤一次敏感语句,我们双写就能绕过。这里我们攻击语句为
"><scscriptript>alert(1)</scscriptript>
我们看源代码发现和我们猜测的一样,敏感语句被替换为空了。为什么上一关不能双写绕过呢,仔细发现上一关其实是把敏感语句替换为其他字符串了,这一关是替换为空。这就是6、7关不同的地方。而且第7关有大小写过滤。
3、关卡8
第八关我们看源代码来做,因为想不到方法。发现源代码是全面过滤了keyword参数之前的方法都无效了,但是发现这一关不同的地方是有一个友情链接,我们得从这里入手。
看源代码发现还有一个可控参数就是友情链接的值,a标签的href我们是可以控制的。但是这个参数是被完全过滤了,这个时候我们得利用href隐藏属性自动unicode解码的功能进行绕过。因为编码的xss语句可以绕过这些重重过滤。但是这里我们不能利用之前的攻击语句进行编码,例如"><sCript>alert(1)</sCript>
因为这样就是把href闭合掉了,而且利用不到href自动解码功能了。
攻击语句为
javascript:alert()
编码得javascript:alert()
4、关卡9
又是友情链接,这里我们看源代码,发现过滤手段和上一关差不多,该过滤的都过滤了。这里显而易见突破点还是友情链接这里。
但是仔细观察源代码发现与上一关不同的是这一关对友情链接有一个逻辑判断,意思是如果你输入的链接没有http://开头的话,它就会执行if语句输出你的链接不合法,所以这一关就是加上http://就行了
攻击语句为
javascript:alert()/*http://*/
这里攻击语句我们要把http://用/**/注释掉,不然就会当作地址了不会执行js脚本。
5、关卡10
发现源代码中keyword参数是被过滤的,但是发现隐藏的参数t_sort可以进行传参。而且这个参数只过滤了尖括号,这里我们利用onclick。而且后面加上type=test,因为默认是隐藏的输入框,这里我们要构造输入框才能触发onclick事件。最后一个双引号是闭合type的。<input name="t_sort" value=""onclick="alert()" type="test" type="hidden">
攻击语句为
"οnclick="alert()" type="test
总结
此文章是小白自己为了巩固xss攻击而写的,大佬路过请多指教!