Dvwa中xss的impossible等级是如何防御的

在之前分别讲了Dvwa的Xss测试的LowMediumHigh等级,这节课就深入的来讲impossible如何防御的( 其实之前文章也有讲过,不详细,这节课就深入的来讲解一下 )

老套路,直接看源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );

// Feedback for end user
echo "<pre>Hello ${name}</pre>";
}

// Generate Anti-CSRF token
generateSessionToken();

?>

这段代码中的checkToken()函数是用于防御Csrf攻击的,先不用管,我们先来看看这个htmlspecialchars()函数

官方解释

htmlspecialchars — 将特殊字符转换为 HTML 实体

执行转换

字符 替换后
& (和号) 成为 &amp;
“ (双引号) 成为 &quot;
‘ (单引号) 成为 '
< (小于) 成为 &lt;
> (大于) 成为 &gt;

开始操作

未过滤

先看一段代码简单的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<?php
$name = $_GET['name'];
?>

<h1>你好,<?php echo $name;?></h1>

</body>
</html>

访问http://127.0.0.1/myphp/demo.php?name=1:

image_1ceefa1be1bbm1rnk1mnt1jn019nc9.png-86.4kB

访问http://127.0.0.1/myphp/demo.php?name=<img src=x>:

image_1ceefbiqtarl1pcuc268a01lm7m.png-33.9kB
可见,这个是存在Xss的,那么我们用htmlspecialchars函数来过滤~

过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<?php
$name = $_GET['name'];
$name = htmlspecialchars( $name );
?>

<h1>你好,<?php echo $name;?></h1>

</body>
</html>

继续访问http://127.0.0.1/myphp/demo.php?name=<img src=x>:

image_1ceefgvqvh1ta2riv01papfcb13.png-34.8kB

看到这里,你们就会好奇了,为什么会直接把输入的内容输出出来,而不是以代码被解析?我们打开审查元素看一看(F12)

image_1ceefjr3mik51606kc21ete15ct1g.png-31.9kB
我们可以发现这里是把<变成了&lt;,把’>’变成了&gt;,从而导致了代码只会原样输出而不会当成代码来编译

如果你还困惑的,我再给你看一段代码:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<h1>你好,&lt;img src=x&gt;</h1> <!-- 注意看这里 -->
</body>
</html>

访问http://127.0.0.1/myphp/demo.php:

image_1ceefpck81ibnca2re9bvb1tpd1t.png-74kB

Dvwa演练平台的Xss反射型部分撒花完结~

十年寒窗无人问,一举成名天下知
– Cai_Team

本文标题:Dvwa中xss的impossible等级是如何防御的

文章作者:Iamfree

作者QQ:1900065568

发布时间:2018年05月25日 - 21:05

最后更新:2018年07月10日 - 16:07

原始链接:127.0.0.1/2018/05/25/Dvwa中xss的impossible等级是如何防御的/

许可协议:暂时请不要转载,感谢!!!

坚持写有质量的原创\转载文章,如果您觉得质量不错的话就点击下面按钮打赏我们把~
---------------本文结束感谢您的阅读,喜欢我们的话就加入我们吧~---------------