代码审计实战—DWVA-xss-Medium(存储)
0x00 前言
如饥似渴的学习ing。
你可能需要看一看这个:
https://blog.****.net/qq_36869808/article/details/83029980
0x01 start
1.黑盒
详细请看:
https://blog.****.net/qq_36869808/article/details/83308395
<img src=1 onerror=alert(/du/)>
这里发现出了问题,这里不能够进行xss,出现的弹窗是之前测试留下来的。
现在我们在name段使用exp
<img src=1 onerror=alert(/du/)>
出现一个新的问题就是长度不够。
现在我们有两种解决方案,f12和抓包,我们使用f12的方式吧。
这里调整一下,然后看效果。
现在就成功了。
2.白盒
然后我们来看看源码
$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)) ? "" : ""));
可以先参考一下这篇文章
https://blog.****.net/qq_36869808/article/details/83340707
首先来看看message。
首先上来就是一个addslashes
干掉了引号啥的。干掉string型的sql注入。
然后来看看strip_tags
这里直接把标签给去掉了。
然后接着来看mysqli_real_escape_string
把sql注入搞死。
然后接着来htmlspecialchars()
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
这里把xss搞死。
好吧,这个参数是没啥利用价值了。
我们来接着看看name。
第一重防御
过滤<script>
这种一般都会被绕过,还是转化实体厉害。
第二重防御
防止sql注入,这个倒是防住了。
我们的exp是这个样子的。
<img src=1 onerror=alert(/du/)>
没有script所以防不住。