欧博app下载:XSS原理及代码剖析

admin/2020-07-12/ 分类:科技/阅读:

前言

XSS又叫跨站剧本攻击,是一种对网站应用程序的平安漏洞攻击手艺。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。XSS分为三种:反射型,存储型,和DOM型。下面我会组织有缺陷的代码,从代码剖析这三种类型。
若是想要领会XSS基础的可以看我的这篇文章:XSS(跨站剧本攻击)简朴解说
若是想要领会SQL注入原理的可以看我的这两篇文章:SQL注入原理及代码剖析(一)
SQL注入原理及代码剖析(二)
参考文献:《Web平安攻防》

反射型XSS

反射型XSS又叫非持久型XSS,这种攻击方式往往具有一次性。
先看代码

<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>xss行使输出的环境组织代码</title> </head> <body> <center> <h6>把输入的字符串输出</h6> <form action="#" method="get"> <h6>请输入</h6> <input type="text" name="xss" value="请输入"><br /> <input type="submit" value="确定"> </form> <hr> <?php if (isset($_GET['xss'])) { echo '<input type="text" value="'.$_GET['xss'].'">'; }else{ echo '<input type="text" value="输出">'; } ?> </center> </body> </html> 

在代码中,通过GET获取参数xss的值,然后通过echo输出一个input标签,并将xss的值放入input标签的value中。
接下来我们看一下页面,例如我们输入123,会在下面的输出框中输出123。

那么下面,我们当我们输入"><script>alert(1)</script>时,输出到页面的HTML代码变为<input type="text" value=""><script>alert(1)</script>">我们发现,输入的双引号闭合了value属性的双引号,输入的>闭合了input的标签<,导致我们后面输入的恶意代码成为另一个HTML标签。

当浏览器渲染时执行了,JS函数alert()导致浏览器弹窗。

存储型XSS

先看代码,参考dvwa的焦点代码。

<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = stripslashes( $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)) ? "" : "")); // Sanitize name input $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>' ); } ?> 

在上面代码中,获取POST参数mtxMessage和txtName,然后将将参数插入到数据库的表中,并显示到页面上。
页面的功效是获取用户名字和内容并插入到数据库中,若是我们输入恶意代码,那么也会插入到数据库中,只有用户接见这个页面,那么恶意代码就会执行。

打开数据库发现插入了我们组织的恶意代码。

DOM型XSS

先看代码

<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" />; <title>测试</title> <script type="text/javascript"> function tihuan() { document.getElementById("id1").innerHTML =document.getElementById("dom_input").value; } </script> </head> <body> <center> <h6 id="id1">这里显示输入的内容</h6> <form action="#" method="post"> <input type="text" id="dom_input" value="输入"><br /> <input type="button" value="替换" onclick="tihuan()"> </form> <hr> </center> </body> </html> 

DOM型XSS程序只有HTML代码,并不存在服务端代码,以是此程序并没有与服务端举行交互。程序存在JS函数tihuan(),该函数得作用是通过DOM操作将元素id1得内容修改为元素dom_input的内容。
这个页面得功效是输入框中输入什么,上面得文字就会被替换成什么。

若是我们输入恶意代码,好比,单击替换按钮,页面弹出新闻框,由于隐式输出,以是查看源代码时是看不到XSS代码的。

XSS修复建议

  1. 过滤输入的数据包罗但不限于单引号,双引号,“<,>”等。
  2. 对输出到页面的数据举行响应的编码转换,包罗HTML实体编码,Javascript编码等。
,

www.px111.net

欢迎进入平心在线官网(原诚信在线、阳光在线)。平心在线官网www.px111.net开放平心在线会员登录网址、平心在线代理后台网址、平心在线APP下载、平心在线电脑客户端下载、平心在线企业邮局等业务。

TAG:
阅读:
广告 330*360
广告 330*360

热门文章

HOT NEWS
  • 周榜
  • 月榜
Sunbet_进入申博sunbet官网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 Sunbet 版权所有
二维码
意见反馈 二维码