Cross-Site scripting
- 反射型xss(get)
分析代码,发现该形式只依靠前端识别message内容后直接传送,没任何限制,在输入框或者url上直接输入payload:<script>alert(document.cookie)</script>
弹出对话框包含了cookie
- 反射型xss (post)
分析代码,发现该形式需要先登录进入后可以输入payload<script>alert(document.cookie)</script>
,代码内部给到了账号密码(可以暴力破解),输入后重复get模式
- 储存型xss
在输入框中直接输入payload:<script>alert(document.cookie)</script>
,直接成功
- DOM型xss
在输入框中直接输入payload,不成功,分析源代码发现点击提交按钮时会触发onclick事件,执行domxss()函数通过document.getElementById()函数获取输入框内内容显示到页面
针对+str+的内容让<a href >闭合
Payload:' οnclick="alert(1)">
输入后点击框下弹出的连接,注入成功了
- DOM型xss-x型
在输入框中直接输入payload,不成功,分析源代码发现点击输入框下的文本后会在弹出一个新的文本,所以应该写入payload:
<script>alert(document.cookie)</script>
,提交后点击一次文本,再点击第二次出现的文本会弹出界面,注入成功。
- xss之盲打
属于要输入内容上传后台,推测与储存型一致,在输入框中直接输入payload:
<script>alert(document.cookie)</script>
不成功,前端没有显示,说明应该在后台有。
右上角有一个点一下提示,根据给的网址进入后台,账号:admin密码: 123456.进入后弹出提示框则说明受到了xss攻击
- xss之过滤
直接写入payload,发现字母都不见了,应该是被识别删除了,
分析代码,发现是代码中会识别并删掉<script
尝试改变大小写
<sCript>alert(document.cookie)</scripIT>,成功
注:前后的<script>都要改大小写但是不用字母对应改变
- xss之htmlspecialchars
直接写入payload:
<script>alert(document.cookie)</script>
发现下面出现一条记录,点击后报错
查看php源代码:
提示使用这种payload:' οnclick='alert(111)'
查看网页源代码发现,<>被转义了
所以尝试使用提示中给的payload
输入后点击文本框下的文字,弹窗成功
- xss之href输出
直接写入payload:
<script>alert(document.cookie)</script>,如上个实验一样报错,查看php源码,提示用JavaScript协议执行,查看网页源代码
是写在<a href>标签里的,所以要遵循JavaScript的原则
可以输入: javascript:alert(111)
输入后点击文字,弹窗成功
- xss之js输出
直接写入payload:
<script>alert(document.cookie)</script>,无效果
查看php源代码,提示用\对特殊字符转义
查看网页源代码发现是填写的内容被写入到了JavaScript中,
可以尝试用</script>将该script封闭
此处payload:
</script><script>alert(document.cookie)</script>
弹窗出现,成功!