pikachu靶场练习——XSS详解

这篇具有很好参考价值的文章主要介绍了pikachu靶场练习——XSS详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。

XSS 跨站漏洞分类:

1. 反射型

<非持久化>攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(不会存储在服务器,不会经过数据库),一般容易出现在搜索页面。

2. 储存型(比反射型危害大些)

<持久化>代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

3. DOM型

基于文档对象模型Document Objeet Model(DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。(DOM型XSS只在前端,与后端毫无关系。)

一、反射型xss(get)

直接输入一个script试试,但是发现输入框限制了长度。
pikachu靶场练习——XSS详解
这里我们有两种方法解决这个问题。

1、网页框直接输入

第一种是通过观察发现网页框的url里面有我们输入的信息,直接在这上面上修改。
输入<script>alert("xss")</script>,如图:
pikachu靶场练习——XSS详解
回车效果如下:
pikachu靶场练习——XSS详解

2、修改输入框的长度

用快捷键f12,选中输入框,看到它的maxlength为20。
pikachu靶场练习——XSS详解
我们把它随意改个值,这里我改的是100。

pikachu靶场练习——XSS详解
再在输入框输入<script>alert("xss")</script>,如图:
pikachu靶场练习——XSS详解
点击submit效果如下:
pikachu靶场练习——XSS详解

二、反射型xss(post)

根据提示直接登录账号,用户名admin,密码123456。
pikachu靶场练习——XSS详解

JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。

我们这里输入<script>alert(document.cookie)</script>

pikachu靶场练习——XSS详解
得到了cookie值。
pikachu靶场练习——XSS详解

三、存储型xss

在留言板直接输入:
<script>alert(document.cookie)</script>
pikachu靶场练习——XSS详解
提交得到cookie值:
pikachu靶场练习——XSS详解
这里需要注意的是当我们点击其他关卡再次回到这个存储型xss关卡时它仍会出现弹窗,这说明存储型xss是存储在服务器的数据库中的,也就是说存储型XSS能危害所有访问受影响页面的用户。
pikachu靶场练习——XSS详解

四、DOM型xss

我们像之前一样输入<script>alert(document.cookie)</script>,点击提交发现出现一行小字,点击后出现403页面。
pikachu靶场练习——XSS详解
查看源代码,发现这里有个domxss函数。大概意思是我们输入的值作为str写入到了a标签里。

<a href='"+str+"'>what do you see?</a>

这里的<script>alert(document.cookie)</script>写入时就失效了,因为a标签里面没有这种写法,所以我们要看看其他的用法,这里给出了两种方法。
pikachu靶场练习——XSS详解

1、补充完a标签

根据提示a标签可以这么用:

<a href='' onclick="alert('xss')"></a>

所以我们直接输入str为

' οnclick="alert('xss')">

点击下面的小字后效果如图:
pikachu靶场练习——XSS详解

2、用img标签

我们先闭合掉a标签,然后用img标签,语句如下:

'><img src="#" οnmοuseοver="alert('xss')">

onmouseover事件:指鼠标移动都某个指点的HTML标签上,会出现什么效果。

pikachu靶场练习——XSS详解
当我们把鼠标移动到前面的图片上时,效果如图:
pikachu靶场练习——XSS详解

五、DOM型xss-x

既然还是DOM型,就直接查看网页源代码,发现跟上一关没啥区别。
pikachu靶场练习——XSS详解
唯一有一点不同的是,输入出现在了url中:
pikachu靶场练习——XSS详解

由于本关payload在url中,因此比第4关好利用很多
DOM型XSS只在前端,与后端毫无关系。DOM-X型危害更大,它能够像反射型一样在URL中体现,将URL发给了受害者就能进行攻击。

六、xss之盲打

直接输入框输入<script>alert(document.cookie)</script>
pikachu靶场练习——XSS详解
提交后发现没有反应
pikachu靶场练习——XSS详解
根据提示登录后台地址:/admin_login.php
pikachu靶场练习——XSS详解
再登录账号:admin密码:123456
pikachu靶场练习——XSS详解
看到后台得到的cookie值:
pikachu靶场练习——XSS详解

七、xss之过滤

直接输入<script>alert(document.cookie)</script>
pikachu靶场练习——XSS详解
提交后出现了一个’>’
pikachu靶场练习——XSS详解
发现页面有回显输入的内容,url中也有输入的内容,离开本页面再回来,页面就没有这个内容了,说明是反射型GET型XSS
pikachu靶场练习——XSS详解
说明这一题存在过滤,我们需要尝试他过滤了什么字符和如何绕过过滤。
猜测一下可能有:"<>'on/`() script img href src
把以上字符一起提交,发现<>‘on/’() script被过滤掉了
pikachu靶场练习——XSS详解
但是单独输入**<>‘on/’() ,发现没有被过滤掉:pikachu靶场练习——XSS详解
说明过滤掉的语句可能是
<.script*

那就不要用< script>标签了,尝试使用别的标签
输入Payload:

<a href="#" onclick="alert(document.cookie)">

点击之后得到cookie:
pikachu靶场练习——XSS详解
pikachu靶场练习——XSS详解
这里可以看一下php:
pikachu靶场练习——XSS详解
这里的preg_preplace()函数的用法如下:
pikachu靶场练习——XSS详解
pattern这部分为要匹配的内容,在匹配内容的开头和结尾必须要添加同样的标识,但是不能为数字和字母,所以这里前后出现了/:

'/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/' 

七、xss之htmlspecialchars

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为 ’
< (小于)成为 <
(大于)成为 >

它的语法如下: htmlspecialchars(string,flags,character-set,double_encode)
其中第二个参数flags需要重要注意,很多开发者就是因为没有注意到这个参数导致使用htmlspecialchars()函数过滤XSS时被绕过。因为flags参数对于引号的编码如下:
可用的引号类型:
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES -不编码任何引号。

输入**,发现没有效果。
pikachu靶场练习——XSS详解
查看源代码,发现有个a标签,它<>部分被html编码。此这关想闭合标签是不行了。仔细一看,又发现单引号居然没有被html编码,所以就利用一下标签吧。
pikachu靶场练习——XSS详解
输入
#’ οnclick=‘alert(1)’>**,提交点击,发现成功弹窗。
pikachu靶场练习——XSS详解

八、xss之href输出

先输入个<script>alert(1)</script>试试,没有弹框
pikachu靶场练习——XSS详解
右键查看源代码,发现它过滤了<>:
pikachu靶场练习——XSS详解
试试#' onclick='alert(document.cookis)',发现还是没有弹窗,查看源代码,发现过过滤了’':
pikachu靶场练习——XSS详解
所以现在左右尖括号和单引号都被html编码了。
我们查看w3school,发现href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。
所以我们这里可以输入:

javascript:alert(document.cookie)

得到弹窗:
pikachu靶场练习——XSS详解
查看php文件,发现它用了ENT_QUOTES - 编码双引号和单引号。
pikachu靶场练习——XSS详解

七、xss之js输出

先输入个<script>alert(1)</script>试试,没有弹框,查看源代码:
pikachu靶场练习——XSS详解
发现输入的闭合掉了,介绍两种办法:
法一:直接可以输入</script><script>alert(1)</script>,得到弹窗:
pikachu靶场练习——XSS详解
法二:
或者无中生有出一个js语句就好了,首先要用’;闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的’;
输入';alert(1);//,得到弹窗
pikachu靶场练习——XSS详解
查看php,这里的关键是JS的输出点应该使用\对特殊字符进行转义:
pikachu靶场练习——XSS详解
总结:
1、在不知道它过滤了什么的情况下,可以用**"<>'on/`() script img href src**等字符
2、用htmlspecialchars进行过滤,默认情况下没有过滤单引号。
3、在a标签的href中可以利用JavaScript协议执行js语句。在有输入接口,并且将输入内容直接赋值给变量的,可以构造闭合来执行恶意js代码。文章来源地址https://www.toymoban.com/news/detail-487297.html

到了这里,关于pikachu靶场练习——XSS详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录--详解 XSS(跨站脚本攻击)

    前言:我们知道同源策略可以隔离各个站点之间的 DOM 交互、页面数据和网络通信,虽然严格的同源策略会带来更多的安全,但是也束缚了 Web。这就需要在安全和自由之间找到一个平衡点,所以我们默认页面中可以引用任意第三方资源,然后又引入 CSP 策略来加以限制;默认

    2024年02月08日
    浏览(30)
  • Web漏洞-XSS实验-pikachu靶场5个场景(二)

    ★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 上一篇《Web漏洞-XSS理论和靶场小试牛刀(一)》已经介绍了XSS一些理论知识点,本文

    2024年02月05日
    浏览(35)
  • Web漏洞-XSS绕过和pikachu靶场4个场景(三)

    ★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1.1、XSS漏洞挖掘 数据交互(输入/输出)的地方最容易产生跨站脚本,最重要的是考

    2024年02月05日
    浏览(39)
  • Pikachu靶场通关笔记--Cross-Site Scripting (XSS)

    首先,我们先区分get和post的区别。GET是以url方式提交数据;POST是以表单方式在请求体里面提交。通过get提交的数据是可以直接在url中看到的,所以GET方式的XSS漏洞更加容易被利用, 一般利用的方式是将带有跨站脚本的URL伪装后发送给目标,而POST方式由于是以表单方式提交,无法

    2024年02月05日
    浏览(32)
  • Pikachu靶场练习——CSRF

    打开pikachu靶场的CSRF我们可以看到CSRF的练习共有三项,分别为get、post、CSRF Token,在概述的地方有对CSRF的简单描述和一个小场景,对CSRF不熟悉的话建议先看看,看完之后那就开始趴。 点击CSRF(get)我们可以看到一个登录页面,点一下提示我们能够得到用户的登陆密码(后面

    2023年04月08日
    浏览(33)
  • 跨站脚本攻击XSS

    XSS又叫CSS (CrossSiteScript),因为与层叠样式表(css)重名,所以叫Xss,中文名叫跨站脚本攻击。 xss攻击,主要就是攻击者通过“html注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击方式。 危害 可以盗取用户Cookie 挂马(水坑攻击) 在用户经

    2024年02月15日
    浏览(42)
  • 跨站脚本攻击(XSS)

             XSS :Cross Site Scripting ,为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。在一开始的时候,

    2024年02月08日
    浏览(83)
  • XSS注入(跨站脚本攻击)

    今天学习一下xss注入 XSS注入漏洞又称为\\\"跨站脚本攻击(Cross Site Scripting)\\\",为了不和层叠样式表(Cascading Style Sheets,CSS)混淆,所以将跨站脚本攻击缩写为XSS。xss本质上是黑客通过对网页的HTML注入,篡改了原本服务器发给客户端的数据包,在其中插入了恶意的Script代码插入到网页

    2024年02月09日
    浏览(30)
  • XSS跨站脚本攻击漏洞

    XSS(跨站脚本攻击)是一种常见的网络安全漏洞,它允许攻击者在网站中植入恶意的脚本代码,当其他用户访问该网站时,这些脚本代码会在用户的浏览器中执行。这可能会导致严重的安全后果,比如窃取用户的敏感信息,欺骗用户,或者在用户的浏览器中执行恶意操作。

    2024年02月09日
    浏览(35)
  • RPCMS跨站脚本漏洞(xss)

    CNVD-ID:     CNVD-2024-01190 漏洞描述:     RPCMS是一个应用软件,一个网站CMS系统。     RPCMS v3.5.5版本存在跨站脚本漏洞,该漏洞源于组件/logs/dopost.html中对用户提供的数据缺乏有效过滤与转义,攻击者可利用该漏洞通过注入精心设计的有效载荷执行任意Web脚本或HTML。 漏洞复

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包