DVWA靶场实战(十一)

十一、XSS(Reflected):

1.漏洞原理:

  XSS被称为跨站脚本攻击(Cross Site Script),而Reflected被称作反射型XSS。不同于DOM和Stored,Reflected反射型无法存储。防御措施以及利用手法同DOM大同小异。

2.实战:

(1)Low:

  代码分析:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Feedback for end user
$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
} ?>

  基本上也是不设防状态,所以我们可以直接尝试攻击。

  这里我们用弹窗进行测试,利用语句“<script>alert(1)</script>”,得到以下情况,说明攻击成功。

(2)Medium:

  代码分析:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = str_replace( '<script>', '', $_GET[ 'name' ] ); // Feedback for end user
$html .= "<pre>Hello ${name}</pre>";
} ?>

  这里我们看到会将<script>替换为空格,所以我们可以使用双写注入或者大小写绕过。

  这里我们利用语句“<sc<script>ript>alert(1)</script>”(双写注入),或者“<sCript>alert(1)</ScRipt>”(大小写注入)。可以看见如下就是成功了。

(3)High:

  代码分析:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); // Feedback for end user
$html .= "<pre>Hello ${name}</pre>";
} ?>

  这里已经不区分大小写的屏蔽“script”了,所以我们这里采用img标签注入。

  我们开始攻击,利用“<img src=# onerror=alert("xss")>”语句进行攻击,发现成功。

(4)Impossible:

  代码分析:

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input
$name = htmlspecialchars( $_GET[ 'name' ] ); // Feedback for end user
$html .= "<pre>Hello ${name}</pre>";
} // Generate Anti-CSRF token
generateSessionToken(); ?>

  作为防御模板,将输入的代码转为HTML实体。

#文章来源:wybsignal

最新文章

  1. Qt:postEvent 与 customEvent() 函数 进行异步通信; 以及参数的传递 // 防止界面卡死;;
  2. 设置windows开机自启某个软件
  3. Java 8相关
  4. 编写一个简单的jdbc例子程序
  5. java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较
  6. Android Studio 使用小技巧
  7. NIOS II CPU复位异常的原因及解决方案
  8. WITH (NOLOCK)
  9. Hadoop Mac OSX 安装笔记
  10. LCIS(m*n) 最长公共上升子序列
  11. P1011 传纸条//dp优化改进状态表示
  12. 一些Swift编程语言的相关资料
  13. 【教训】rm -fr ./* 教训
  14. `DevOps`相关知识搜集
  15. 怎么样获取小米手机4的ROOT超级权限
  16. python(列表2)
  17. Quartz.Net进阶之二:关于触发器的更多信息
  18. githug rename_commit 修改已经commit但还没push的一条message
  19. 转方阵|2012年蓝桥杯B组题解析第五题-fishers
  20. taro 学习资料

热门文章

  1. java学习之Cookie与Session
  2. 【题解】CF374C Inna and Dima
  3. Re:从零开始教你使用 Sublime Text
  4. 字符编码 XUTF
  5. Go语言核心36讲04
  6. Web安全Day1 - SQL注入、漏洞类型
  7. MyBatis-Plus 分页插件过时
  8. Docker 工作原理分析
  9. 批量将多个相同Excel表格内容合并到一个Excel表格的sheet工作簿当中。
  10. ArcObjects SDK 012 PageLayout和Page