pikachu之xss漏洞

xss漏洞可以被用来进行钓鱼攻击、前端js挖矿、用户cookie获取,甚至可以结合浏览器自身的漏洞
对用户主机进行运程控制

XSS测试流程

1、在目标上找输入点,比如查询接口、留言板

2、 输入一组 “特殊字符(>,',"等)+唯一识别字符” ,点击提交后,查看返回源码,看后端返回的数据是否有处理

3、通过搜索定位到唯一字符,结合唯一字符前后语法确定是否可以构造执行js的条件(构造闭合)

4、 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞

第一关反射型xss(get)

pikachu之xss漏洞
注意到输入的值未做任何处理,直接输出到P标签,尝试输入,会发现有输入长度限制,直接控制器改掉去,再次提交出现xss弹窗
pikachu之xss漏洞
pikachu之xss漏洞
在浏览器的URL得到一个get请求,在新网页打开这个链接也会出现弹窗,GET方式的xss漏洞更容易被利用,
一般利用的方式是将带有跨站脚本的URL伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用URL方式进行攻击。
http://pikachu/vul/xss/xss_reflected_get.php?message=<script>alert("xss")<%2Fscript>&submit=submit

第二关反射型xss(POST)

与get不同,POST输入的值URL不会有变化,所以POST传参

pikachu之xss漏洞
pikachu之xss漏洞

第三关储存型xss

pikachu之xss漏洞
pikachu之xss漏洞
注意到好像对输入的值未作任何处理,构造js语句输入,输出弹窗,刷新之后依旧出现,因为这条留言已经被存储在数据库里了,所以每次访问都会出现
pikachu之xss漏洞
pikachu之xss漏洞

第四关DOM型xss

pikachu之xss漏洞
pikachu之xss漏洞

看了一下getElementById的使用,知道了后面的what do you see 其实可以是一个弹窗,
通过getElementById方法获取text,text就是我们要输入的内容,将text赋值给str,写到href里面

pikachu之xss漏洞
pikachu之xss漏洞
输入payload1
当鼠标移动到图片位置就会触发弹窗
pikachu之xss漏洞

输入payload2
点击what do you see就会触发弹窗
pikachu之xss漏洞

xss-x

pikachu之xss漏洞
pikachu之xss漏洞

第五关xss盲打

xss盲打不是攻击类型,而是一个攻击场景。
我们输入的内容不会出现在前端,只有在后台才能看见输入的内容,可以插入获取cookie的恶意代码,
管理员的cookie就可以不知不觉的被获取
pikachu之xss漏洞
pikachu之xss漏洞
pikachu之xss漏洞

第六关xss过滤

查看源码,发现script小写会被替换成空,一开始我以为可以向sql过滤一样双写script来绕过,但好像不行。
接着试了下大小写,可以造成弹窗

pikachu之xss漏洞
pikachu之xss漏洞

第七关xss之htmlspecialchars

htmlspecialchars()是PHP提供的一个对特殊字符进行转义的函数,把预定义的字符转化为HTML字体
&转换为&amp
"转换为&quot
'转换为&#039
<转换为&lt

转换为&gt

pikachu之xss漏洞

输入<'"?123>查看源代码,会发现<>" 都被替换过滤了,可以尝试用'来绕过

pikachu之xss漏洞
pikachu之xss漏洞

xss之href输出

查看了一下源码,知道了单双引号被过滤,输出在a标签的href属性里面,可以使用javascript协议来执行js,使用伪协议绕过
javascript:alert(/xss/)

pikachu之xss漏洞

xss之js绕过

输入的123会直接给变量MS,只需要构造闭合单引号就行,123'</script><script>alert(xss)// 123'; alert(/xss/); //

pikachu之xss漏洞

上一篇:pikachu靶场安装(phpstudy)(仅供参考)


下一篇:pikachu靶场之SQL注入(1-3)