在学习xss,推荐一本红书《XSS跨站脚本攻击剖析与防御(完整版)》,这个有钱的自己买,没钱的pdf ,看完了就差实践了,谢谢诶
先从DVWA的xss开始学习吧,网上学习xss的少,起码比sql少
等级先调成low
Username:admin Security Level:low PHPIDS:disabled
Reflected Cross Site Scripting (XSS) --low
这里没有进行过滤任何参数,直接引用了name参数,输入
<script>alert(xss)</script>弹窗爆出xss.
Medium
`$name = str_replace('<script>'', $_GET['name'] );`
这里过滤了<script> ,采用了黑名单的方式,这里学过sql绕过的筒子应该知道的,所以可以用双写,或者大小写绕过啊
<Script>alert(/xss/)<sCript> 大小写可以是随机的
或者<s<script>cript>alert(/xss/)</sc</script>ript> 双写的位子也可以是随机的,学过绕过的应该都知道,我就不说了。
High
`$name=preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i','',$_GET['name'] );` 这里用正则过滤了会出现<script>的每个单词,就是说大小写和双写没用了,但是由于它只过滤了<script>还可以用其他的js标签来弹窗,比如 img的onerror报错,<img src=1 onerror=alert(xss)> onerror指的是在找不到指定图片或者网速贼慢的时候执行的另一个事件,通过一个错误的图片让弹窗执行即可
<body onload=alert(xss)> 同理 在页面加载之后立即执行一段 JavaScript
Impossible
`$name = htmlspecialchars( $_GET['name'] );`
在Impossible里面用了htmlspecialchars把预定义的字符&、”、’、<、>转换为HTML实体,也就是说不能用作html元素了,这样就不能构造代码了