(注:若复制注入代码攻击无效,请手动输入注入语句,在英文输入法下)
反射型xss(get型)
1.打开网站
发现有个框,然后我们在框中输入一个“1”进行测试,
可以看到提交的数据在url处有显示,在页面中也显示了相应的结果。
2.在输入框中插入我们的攻击语句
<script>alert("xss")</script>
发现只能输入上面的字符,后面不能再输入了
此时有两种方法
第一种,在url栏中提交数据
访问发现没什么反应,那是因为在url栏中()要被编码
所以输入的数据应该是
<script>alert%28"xss"%29</script>
此时访问页面,则会出现弹窗
第二种,鼠标右键单击当前页面,点击检查
以图中的序号为准,依次点击
会看到图中的位置有个maxlength,就是这个限制了输入框中输入的数据长度,把它的值改成2000,然后点击右上角关掉检查页面(注意,不是关闭浏览器页面)
就可以在框中输入我们的攻击语句
<script>alert("xss")</script>
此时点击submit,页面同样会弹窗
反射型xss(post型)
1.打开网站
首先给了我们一个登陆框,在右上角点击提示,会出现用户名与密码,然后登录
2.登录之后在输入框输入1,点击提交
发现地址栏中没有输入的结果,
打开我们的抓包工具
从请求头上可以看到提交方式为post
抓包看到了post提交的数据
3.在输入框中输入攻击语句
<script>alert("xss")</script>
4.弹窗
存储型xss
1.打开网站
2.直接在输入框中输入1,提交
可以看到数据保存在下方了,一般放在服务器上,
3.插入攻击语句,点击提交
攻击语句:<script>alert("xss")</script>
出现弹窗 ,而且因为是存在服务器上的,所以每次提交数据,都会被执行
4.输入admin,点击提交
也会弹窗
DOM型xss
1.打开网站,可以看到一个输入框
2.输入1提交
3.直接右键当前页面,点击检查
4.按顺序点击(快速定位到输入框的前端代码)
5.点击下图中的两个红色框
可以看到我们刚才输入的1变成了一个超链接
可以看到闭合符号为('),需要逃逸出来前面的超链接,闭合掉前面的<a>标签
6.构造攻击语句
'> <src='a' οnclick=alert(1)>
输入到输入框中,点击提交
可以看到<a>标签被闭合了
7.点击超链接
8.就会出现弹窗
DOM型xss-x
和DOM型xss一样,检查,查看闭合符号,然后构造攻击语句。
在输入框中插入
'> <src='a' οnclick=alert(1)>
按照图中顺序点击,则会弹窗。
xss之盲打
1.打开网站
看到有框,秉承着有框就插的原理,注入我们的弹窗语句
<script>alert("xss")</script>
2.点击提交,发现并没有弹窗
输入正常的语句也没有什么有用的显示,此时点击右上角的提示,它让我们登录后台看一下
3.点击提示,把框1中的地址复制到框2中
完整的地址应该是
localhost:8086/pikachu-master/vul/xss/xssblind/admin_login.php
可以看到出现了一个登陆框,输入账号密码,若不知道,可以点击右上角的提示查看
4. 登录之后可以看到出现弹窗。
xss之过滤
1.打开网站,直接插入攻击语句
<script>alert("xss")</script>
看到输出的是这样,
当我们输入一个正常值,比如我爱学习
可以看到我们输入的值被放在单引号里面了,而我们的攻击语句只有>,说明他对我们的输入做了过滤。
2.使用其他弹窗函数
比如:
<img src="x" οnerrοr=alert("xss")>
也可以用其他的弹窗函数。
3.出现弹窗
xss之htmlspecialchars
1.打开网站,输入注入语句
2.发现被记录在页面上
3.右键检查,发现变成了一个超链接
4.构造注入语句
javascript:alert(1)
5.点击提交,点击下面的链接,出现弹窗
xss之href输出
和上题类似,输入注入语句,右键检查,发现也是被记录在a标签的herf属性内
用注入语句
javascript:alert(1)
点击框中的超链接,出现弹窗
xss之js输出
1.打开网站,输入攻击语句
<script>alert(1)</script>
2.右键检查
发现我们输入的语句被放在了这里,而且后面的</script>标签和前面本身就有的<script>标签凑成了一对,导致我们的攻击语句不能正常运行,想办法闭合掉前面的<script>
3.构造攻击语句
</script><script>alert(1)</script>
4.点击提交,出现弹窗