oasisCraft
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
This lab contains a reflected cross-site scriptingvulnerability in the search blog functionality where angle brackets are HTML-encoded. To solve this lab, perform a cross-site scripting attack that injects an attribute and calls the alert function.
关键词:反射XSS,搜索功能,<>做了HTML-encoded编码,
注入点:attribute属性上。
打开靶场后,先实验下搜索功能,用一个简单的payload: <img src=1 onerror=alert(1)>,结果如下:
Burp里边抓包结果如下:
寻找注入点:
由此可见程序把我们的搜索内容放在了input的value属性里,但是<>被HTML-encoded为html字符实体了。
换一个payload
结果如下
Value属性被绕过了,但是新加的元素没有被解析成html标签。
看来新加元素是不通的,有经验的师傅就会联想到新加属性绕过了。问下kimi,input都有哪些属性值:
经验证,这些on开头的属性都能实现弹窗,但是只有"onmouseover="alert(1)的弹窗成功后,该实验室的状态会变成solved。
总结:某类字符在 HTML 中有特殊用处,如需保持原意,需要用 HTML 实体来表达。在编程语言中,使用内置的函数来自动进行HTML实体编码。例如,PHP中的htmlspecialchars()或htmlentities(),Java中的StringEscapeUtils.escapeHtml(),Python中的cgi.escape()等。比如php中的htmlspecialchars()会转换下列字符。单引号和双引号可以配置转换还是不转换。靶场中的双引号就没有转换。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)