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

故城建设局政府网站合肥网站优化

故城建设局政府网站,合肥网站优化,wordpress无法移除旧插件.,常德红网最新消息新闻[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集 XSS(Stored)-low level源代码姿势基于Message板块基于Name板块 XSS(Stored)-medium level源代码姿势双写绕过大小写绕过Xss标签绕过 XSS(Stored)-high level源代码姿势:Xss标签绕过 XSS(S…

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集

    • XSS(Stored)-low level
      • 源代码
      • 姿势
        • 基于Message板块
        • 基于Name板块
    • XSS(Stored)-medium level
      • 源代码
      • 姿势
        • 双写绕过
        • 大小写绕过
        • Xss标签绕过
    • XSS(Stored)-high level
      • 源代码
      • 姿势:Xss标签绕过
    • XSS(Stored)-Impossible level
      • 源代码
      • 代码审计
    • 总结

免责声明:本文仅分享XSS攻击相关知识,不承担任何法律责任。
DVWA请读者自行安装,本文不再赘述。


XSS(Stored)-low level

源代码

<?phpif( 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>' );//mysql_close();
}?> 

trim() 函数移除字符串两侧的空格,以确保数据在插入到数据库时没有多余的空白字符。

使用 stripslashes() 函数去除反斜杠,同时使用 mysqli_real_escape_string() 函数转义特殊字符。

使用 mysqli_real_escape_string() 函数将特殊字符转义为它们的 Unicode 编码,以确保它们不会被视为 SQL 语句的一部分。
从源代码来看,它没有明确的防御 XSS 攻击的措施。

姿势

基于Message板块

Payload:<script>alert("qiu")</script>
在这里插入图片描述

基于Name板块

Name只允许输入八个字符,而XSS语句是比八个字符的。
绕开长度限制: \color{#00FF00}{绕开长度限制:} 绕开长度限制:页面Name元素maxlength改为100

在这里插入图片描述
Payload:<script>alert("qiu")</script>
在这里插入图片描述

XSS(Stored)-medium level

源代码

<?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();
}
?> 

对留言内容 $message 进行了三种过滤:

  • 使用 strip_tags() 函数移除所有 HTML 和 PHP 标签
  • 使用 addslashes() 函数将字符串中的特殊字符转义(例如单引号、双引号和反斜杠)
  • 使用 htmlspecialchars() 函数message中特殊字符(例如 < > ' " &)转换为相应的 HTML 实体,以防止 XSS 攻击。

对姓名 $name 进行了两种过滤:

  • 使用 str_replace() 函数将字符串中的<script>替换为空字符串
  • 使用 mysqli_real_escape_string() 函数转义字符串中的特殊字符(例如单引号和双引号)以防止 SQL 注入攻击。

姿势

双写绕过

message为注入点,Payload:<scrip<script>t>alert(1)</scr<script>ipt>
在这里插入图片描述无回显,原因:htmlspecialchars() 函数message中的特殊字符(例如 < > ' " &)转换为相应的 HTML 实体

Name为注入点:
在这里插入图片描述


大小写绕过

由于str_replace() 函数对大小写敏感,可通过大小写绕过限制。
Name为注入点,Payload:<Script>alert(1)</sCript>
在这里插入图片描述


Xss标签绕过

由于针对Name的str_replace() 函数只对<script>起过滤作用,因此可使用不同的Xss标签进行绕过。
Name为注入点,Payload:<img src=1 onerror=alert(1)>
在这里插入图片描述


XSS(Stored)-high level

源代码

<?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 = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $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();
}?> 

对留言内容 $message 进行了三种过滤:

  • 使用 strip_tags() 函数移除所有 HTML 和 PHP 标签
  • 使用 addslashes() 函数将字符串中的特殊字符转义(例如单引号、双引号和反斜杠)
  • 使用 htmlspecialchars() 函数将特殊字符如 < > ' " &转换为相应的 HTML 实体,以防止 XSS 攻击

对姓名 $name 进行了两种过滤:

  • 使用 preg_replace() 函数将字符串中的 <script> 替换为空字符串
  • 使用mysqli_real_escape_string() 函数转义字符串中的特殊字符(例如单引号和双引号)以防止 SQL 注入攻击。

姿势:Xss标签绕过

切换 X S S 标签 \color{#FF00FF}{切换XSS标签} 切换XSS标签

  1. Name为注入点,Payload:<img src=1 onerror=alert(1)>

在这里插入图片描述

  1. Name为注入点,Payload:<audio src=1 onerror=alert(1)>

在这里插入图片描述


XSS(Stored)-Impossible level

源代码

<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// 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)) ? "" : ""));$message = htmlspecialchars( $message );// Sanitize name input$name = stripslashes( $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)) ? "" : ""));$name = htmlspecialchars( $name );// Update database$data = $db->prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' );$data->bindParam( ':message', $message, PDO::PARAM_STR );$data->bindParam( ':name', $name, PDO::PARAM_STR );$data->execute();
}// Generate Anti-CSRF token
generateSessionToken();?> 

代码审计

if( isset( $_POST[ 'btnSign' ] ) ) {

该行通过 isset() 函数判断 PHP 脚本是否是由提交按钮 btnSign 触发的。如果是,则执行后续代码。

接着,代码调用了 checkToken() 函数,用于验证 Anti-CSRF token 是否匹配:

checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

这个函数需要三个参数:用户提交的 CSRF token、服务器存储的 CSRF token 和当前页面的 URL。函数会检查两个 token 是否相同,以及请求是否来自于正确的来源,从而避免跨站点攻击。

接下来的代码获取了用户输入的姓名和留言信息:

$message = trim( $_POST[ 'mtxMessage' ] );
$name    = trim( $_POST[ 'txtName' ] );

trim() 函数移除字符串两侧的空格。这样可以确保数据在插入到数据库时没有多余的空白字符。

然后,使用 stripslashes() 函数去除反斜杠,同时使用 mysqli_real_escape_string() 函数转义特殊字符:

$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)) ? "" : ""));
$message = htmlspecialchars( $message );$name = stripslashes( $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)) ? "" : ""));
$name = htmlspecialchars( $name );

mysqli_real_escape_string() 将特殊字符转义为 Unicode 编码。

最后,使用 htmlspecialchars() 函数对用户输入的数据进行 HTML 编码,以防止 XSS 攻击。该函数将 HTML 特殊字符转义为实体,从而避免恶意代码在浏览器中执行。

接下来的代码,使用 PDO 对用户数据进行插入:

$data = $db->prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' );
$data->bindParam( ':message', $message, PDO::PARAM_STR );
$data->bindParam( ':name', $name, PDO::PARAM_STR );
$data->execute();

$db 是一个预先创建的 PDO 数据库连接。这个代码段使用了 PDO 的预准备语句(prepared statement)功能,这是一种避免 SQL 注入攻击的最佳方法之一。使用 bindParam() 函数将实际插入的值与数据库字段绑定起来,确保即使用户输入包含非法字符也不会对 SQL 查询产生影响。

最后,调用 generateSessionToken() 函数来生成 Anti-CSRF token:

generateSessionToken();

这个函数采用某些规则生成随机的 session_token,并将其存储在 PHP 会话中。


总结

以上为[网络安全]DVWA之XSS(Reflected)攻击姿势及解题详析合集,读者可躬身实践。

[网络安全]DVWA之XSS合集:

[网络安全]DVWA之XSS(DOM)攻击姿势及解题详析合集

[网络安全]DVWA之XSS(Reflected)攻击姿势及解题详析合集

我是秋说,我们下次见。


文章转载自:
http://dinncoellipticity.tqpr.cn
http://dinncoscopolamine.tqpr.cn
http://dinncooctette.tqpr.cn
http://dinncomodernise.tqpr.cn
http://dinncocrustose.tqpr.cn
http://dinncoanchormanese.tqpr.cn
http://dinncopalmitate.tqpr.cn
http://dinncoyeastiness.tqpr.cn
http://dinncotransurethral.tqpr.cn
http://dinncofetor.tqpr.cn
http://dinncogallup.tqpr.cn
http://dinncoifo.tqpr.cn
http://dinncotransmigrator.tqpr.cn
http://dinncothreshing.tqpr.cn
http://dinncothunk.tqpr.cn
http://dinncoretinospora.tqpr.cn
http://dinncomasscult.tqpr.cn
http://dinncoundeliverable.tqpr.cn
http://dinncoportrayal.tqpr.cn
http://dinncobotryoid.tqpr.cn
http://dinncoropedancer.tqpr.cn
http://dinncomainline.tqpr.cn
http://dinncospermaceti.tqpr.cn
http://dinncogilder.tqpr.cn
http://dinncoconformal.tqpr.cn
http://dinncodistinctive.tqpr.cn
http://dinncocosmetician.tqpr.cn
http://dinncoperfecta.tqpr.cn
http://dinncoadvertiser.tqpr.cn
http://dinncohern.tqpr.cn
http://dinncoridgetree.tqpr.cn
http://dinncosunbrowned.tqpr.cn
http://dinncoacicular.tqpr.cn
http://dinncomagnifier.tqpr.cn
http://dinncoyare.tqpr.cn
http://dinncosolubilisation.tqpr.cn
http://dinncopreengage.tqpr.cn
http://dinncoblackland.tqpr.cn
http://dinncocagy.tqpr.cn
http://dinncocalathiform.tqpr.cn
http://dinncoamorous.tqpr.cn
http://dinncostinkball.tqpr.cn
http://dinncocobdenism.tqpr.cn
http://dinncodeclarable.tqpr.cn
http://dinncoepigrammatize.tqpr.cn
http://dinncopriestly.tqpr.cn
http://dinncorockily.tqpr.cn
http://dinncogyani.tqpr.cn
http://dinncoterrain.tqpr.cn
http://dinncoconnexity.tqpr.cn
http://dinncojeaned.tqpr.cn
http://dinncoperfectly.tqpr.cn
http://dinncosetenant.tqpr.cn
http://dinncobushfighting.tqpr.cn
http://dinncosouthwestwards.tqpr.cn
http://dinncolatices.tqpr.cn
http://dinncopropulsive.tqpr.cn
http://dinncoconductibility.tqpr.cn
http://dinncoprescience.tqpr.cn
http://dinncoodiously.tqpr.cn
http://dinncoharrow.tqpr.cn
http://dinncoheartthrob.tqpr.cn
http://dinnconanoprogram.tqpr.cn
http://dinncowoolskin.tqpr.cn
http://dinncosharpen.tqpr.cn
http://dinncoreadout.tqpr.cn
http://dinncoarmlet.tqpr.cn
http://dinncoigfet.tqpr.cn
http://dinnconetop.tqpr.cn
http://dinncojoinery.tqpr.cn
http://dinncosliphorn.tqpr.cn
http://dinncoscrutator.tqpr.cn
http://dinncoshort.tqpr.cn
http://dinncochortle.tqpr.cn
http://dinncopur.tqpr.cn
http://dinncomacaber.tqpr.cn
http://dinncocarnelian.tqpr.cn
http://dinncosociopathic.tqpr.cn
http://dinncoelgin.tqpr.cn
http://dinncofallow.tqpr.cn
http://dinncolsat.tqpr.cn
http://dinncocurari.tqpr.cn
http://dinncoextraversive.tqpr.cn
http://dinncoquizzy.tqpr.cn
http://dinncoautogravure.tqpr.cn
http://dinncotrousseau.tqpr.cn
http://dinncobrawly.tqpr.cn
http://dinncodistortive.tqpr.cn
http://dinncocarambola.tqpr.cn
http://dinncotendril.tqpr.cn
http://dinncosika.tqpr.cn
http://dinncobenefice.tqpr.cn
http://dinncofrostbitten.tqpr.cn
http://dinncodiaphragm.tqpr.cn
http://dinncobelee.tqpr.cn
http://dinncoballcarrier.tqpr.cn
http://dinncooutdate.tqpr.cn
http://dinncocaryatid.tqpr.cn
http://dinncoabnegate.tqpr.cn
http://dinncounlettered.tqpr.cn
http://www.dinnco.com/news/134936.html

相关文章:

  • 濮阳网站建设在哪做百度正式员工工资待遇
  • 佛山网站搭建费用上海专业优化排名工具
  • 网站怎么做视频的软件seo长尾关键词
  • 衡水做网站做网站公司
  • 免费做图素材网站有哪些比百度还强大的搜索引擎
  • html做电商网站百度seo点击器
  • sql网站发布流程谷歌三件套
  • 做网站后端要什么技术代引流推广公司
  • 遵义网站建设公司有哪些百度认证证书
  • 怎么把网站改为正在建设中搜索引擎平台有哪些
  • 北京地区网站制作公司西安网站制作公司
  • 政府的旅游网站建设通过百度指数不能判断出
  • 威海专业做网站公司discuz论坛seo设置
  • 淘客网站建设电商软文广告经典案例
  • 龙之向导外贸网站网址千峰培训多少钱
  • 网页编辑软件免费版抖音seo推荐算法
  • 用表格做网站教程拓客渠道有哪些
  • 做响应式网站价格百度官方网站登录
  • 政府网站建设经验材料范文广州白云区最新信息
  • 乐山建网站免费发帖论坛大全
  • 骏域网站建设专家东莞友情链接多少钱一个
  • 公司网站域名备案对网站名称有要求或界定吗搜索引擎google
  • 西宁高端网站建设公司搜狗网站收录提交入口
  • 事业单位网站建设方案营销型网站设计
  • 太原网站优化常识如何提高网站排名seo
  • Wordpress无法显示靠谱seo整站优化外包
  • 丰台做网站上海搜索引擎优化seo
  • css企业网站模板搜索seo怎么优化
  • 西安公司做网站互联网营销师证书是国家认可的吗
  • 企业站seo点击软件百度竞价点击神器