介绍
markdown是一个用于编写和格式化内容的简单语言。github上的readme就是这个编写的。
使用
视觉效果很棒。
markdown编写
![the goodest boy](https://xzfile.aliyuncs.com/media/upload/picture/20190302105527-a276e4a8-3c96-1.png)
非常简单。由于markdown是一个格式化内容的简单语言。读取markdown中的行。生成HTML,那么,如果写入恶意javascript代码。就能造成xss
例如
click me
[click me](http://www.baidu.com)
这里就直接跳转到了baidu
如果写入以下代码呢
[click me](javascript:alert(1))
我们看到,xss经典弹窗。为什么会造成xss呢
当我们输入
[click me](http://www.baidu.com)
他会格式化成
<a href="http://www.baidu.com">click me</a>
我们输入
[click me](javascript:alert(1))
就格式化成了
<a href="javascript:alert(1)">Click me</a>
从而造成了XSS
这需要用户单击才会造成xss
接下来看markdown中的图像语法
![test](https://xzfile.aliyuncs.com/media/upload/picture/20190302105527-a276e4a8-3c96-1.png)
格式化后:
<img src="https://xzfile.aliyuncs.com/media/upload/picture/20190302105527-a276e4a8-3c96-1.png" alt="test">
我们能不能通过双引号闭合造成xss
![test]("onerror="alert('xss'))
格式化后:
<img src="" onerror="alert('xss')" alt="test">
由于src为空,导致代码执行onerr的js语句
还能通过onload属性,在页面加载后执行
![test](https://xzfile.aliyuncs.com/media/upload/picture/20190302105527-a276e4a8-3c96-1.png"onload="alert('xss'))
格式化后:
<img src="https://xzfile.aliyuncs.com/media/upload/picture/20190302105527-a276e4a8-3c96-1.png" onload="alert('xss')" alt="test">
不同markdown版本,会有不同的执行效果