前期准备:搭建dvwa靶场,自行前往其他地方查看安装方法。
一:low模式。
(1)反射型-XSS(reflected)
先进行常规测试,因为是没做防御的所以能直接成功。
说明存在xss漏洞。
通过xss平台,获取cookie
(2)存储型xss--XSS(stored)
可以发现name限制了长度,但我们先不管他,先试试message能不能注入。
发现成功,第一个返回是因为我们之前的已经存储了,第二个弹窗才是我们本次注入的获取cookie值。然后我们回过头来看看能不能在name中注入。
发现name也是可以注入的。
(3)DOM型。
平平无奇的页面,点击select。虽然看起来好像什么都没发生,但是我们可以看导航条出现了我们要查询的东西,于是就可以测测是否存在xss。
发现xss漏洞,那么就可以得到我们要的cookie啦。
二:等级为Medium
(1)反射型:
经过测试,发现script被过滤了,于是我们就想办法去绕过他。
发现大小写就可以绕过啦。
或者双写,但要注意的是这里是过滤<script>而不是script。
(2)存储型:
常规测试一下。
一样的情况,过滤了script,而且大小写还不管用,双写等等也不能用,所以只能放弃在message处注入转为在name中发现是可以的。
(3)DMO:
我们测试发现如果我们直接输入<script>alert(1)</script>语句,他会直接跳到english页面,无论我们怎么变他都是一个样子,所以我们可以考虑使用其他语句试试。
然后根据页面的标签我们可以知道,要先将select闭合才能插入其他语句。
</select><img src=0 οnclick=alert(document.cookie)>
三:等级为high。
(1)反射型:
常规测试:<script>alert(1)</script>,然后就可以发现只剩下一个>
无论怎么测试script都不行,所以说明了这题可能完全的过滤了script,于是我们测试一下其他标签:<img src=0 οnclick=alert(document.cookie)>
(2)存储型:
呃呃呃,由于上一次medium没清空输入的xss所以直接都给我报出来了,这也是存储型xss的危害,所以当我们网站存在存储型xss,要及时清除,避免造成更大的破坏,同时也要防范xss蠕虫。
先常规测试
发现过滤了script,而且name也注入不了
所以尝试执行其他语句试试:<img src=0 οnclick=alert(document.cookie)>
(3)DMO:
与之前一样,但是无论怎么输入好像都不行。于是看了源码才知道。
所以根据分析我们就可以在后面加个&,这样前面就能为真,然后就可以进行注入了:English&<script>alert(1)</script>,具体的解释在下面。
或者
分析:
分析;
array_key_exists()函数是检查default的键名是否存在数组中,如果返回真,则执行switch语句,否则直接跳转到english的网页上。is_null:检查是否为空函数,如果为空则switch,否则就执行default。
然后结合这个语句,如果我们的语句中存在english或French等并且不等于空,就会执行switch即说明我们可以注入,否则就会直接跳到english这个网页上。