ok欢迎来到了第九关,这一关很令人抓狂大家一定要耐心尝试!!!
我们依然像上一关那样输入www.baidu.com试试水
但我们很快发现提示链接不合法
这边提示链接不合法,当时我也没想么多,就单纯的蒙圈了,www.baidu.com这个链接不合法???那我们传入的payload更加不合法了呀,在没有源代码的前提下,我们只能不断尝试,终于,一直被我忽略的超文本传输协议最后成功让链接合法了(苦笑)
一切的一切竟然只是因为一个小小的http:// ?!!!!!
当我们认识到这一点后,便可以着手构建payload了,但是经过测试,script会被程序替换,但是上一 关我们已经初步具备了编码的知识了,利用html编码来伪装我们的payload不是很难的事
在这里,我们依旧选择利用伪协议来构建payload,因为这种跳转链接的页面中伪协议的使用无疑是最方便简单的
http://javascript:alert(/xss/)
但是很快一个新的问题摆在了我们的眼前:伪协议前不能加http://,否则js代码将无法执行
不过这并不是难事,程序只是判断我们的输入内容中是否含有http://,有则合法,无则非法
所以我们把http://放到最后不久可以了吗:
javascript:alert(/xss/)//http://
注意:这里的第一个//是javascript语言中的注释符,在//后面的语句将不会被执行,可以理解为是程序本体外的旁白,这样既能保证语句含有http://,也可以保证js代码的标准规范性
接下来,让我们对payload进行编码:
javascript:alert(/xss/) //http://
ok,现在我们来试试,
成功执行代码,完美通关!!!