巩义机械厂网站建设,河北中石化建设网站,上海服装设计公司排名,大连工业大学宿舍文章目录 一、存储型XSS概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 一、存储型XSS概述 XSS#xff0c;全称Cross Site Scripting#xff0c;即跨站脚本攻击#xff0c;某种意义上也是一种注入攻击#xff… 文章目录 一、存储型XSS概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 一、存储型XSS概述 XSS全称Cross Site Scripting即跨站脚本攻击某种意义上也是一种注入攻击是指攻击者在页面中注入恶意的脚本代码当受害者访问该页面时恶意代码会在其浏览器上执行。 需要强调的是XSS不仅仅限于JavaScript还包括flash等其它脚本语言。 根据恶意代码是否存储在服务器中XSS可以分为存储型XSS与反射型XSS。DOM型的XSS由于其特殊性常常被分为第三种这是一种基于DOM树的XSS。例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面如果这些函数在引用某些变量时没有进行过滤或检查就会产生DOM型的XSS。DOM型XSS可能是存储型也有可能是反射型。
二、low
2.1 源码分析
?phpif( isset( $_POST[ btnSign ] ) ) {// Get input$message trim( $_POST[ mtxMessage ] );$name trim( $_POST[ txtName ] );// Sanitize message input$message stripslashes( $message );$message mysql_real_escape_string( $message );// Sanitize name input$name mysql_real_escape_string( $name );// Update database$query INSERT INTO guestbook ( comment, name ) VALUES ( $message, $name );;$result mysql_query( $query ) or die( pre . mysql_error() . /pre );//mysql_close();
}? 分析
stripslashes()删除字符串中的反斜杠mysql_real_escape_string()转义SQL语句中使用的字符串中的特殊字符可见服务端并没有对XSS进行过滤。
2.2 通关分析 既然没有过滤payloadscriptalert(XSS)/script 三、medium
3.1 源码分析
?phpif( isset( $_POST[ btnSign ] ) ) {// Get input$message trim( $_POST[ mtxMessage ] );$name trim( $_POST[ txtName ] );// Sanitize message input$message strip_tags( addslashes( $message ) );$message mysql_real_escape_string( $message );$message htmlspecialchars( $message );// Sanitize name input$name str_replace( script, , $name );$name mysql_real_escape_string( $name );// Update database$query INSERT INTO guestbook ( comment, name ) VALUES ( $message, $name );;$result mysql_query( $query ) or die( pre . mysql_error() . /pre );//mysql_close();
}? 分析
trim()移除特殊字符默认移除\0NULL 、\t制表符 、\n换行 、\x0B垂直制表符、\r回车、 空格addslashes()转义双引号strip_tags()移除html标签可见服务器对message部分过滤慎严格但是在name参数部分只是做
3.2 通关思路 payload写在name处payloadScriptalert(XSS)/script 。因为name处有字符限制故抓包修改参数。 四、high
4.1 源码分析
?phpif( isset( $_POST[ btnSign ] ) ) {// Get input$message trim( $_POST[ mtxMessage ] );$name trim( $_POST[ txtName ] );// Sanitize message input$message strip_tags( addslashes( $message ) );$message mysql_real_escape_string( $message );$message htmlspecialchars( $message );// Sanitize name input$name preg_replace( /(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i, , $name );$name mysql_real_escape_string( $name );// Update database$query INSERT INTO guestbook ( comment, name ) VALUES ( $message, $name );;$result mysql_query( $query ) or die( pre . mysql_error() . /pre );//mysql_close();
}? 分析name参数处只是过滤了script标签可以使用img标签进行绕过。
4.2 通关思路 payloadimg srcx onerroralert(111)