第一关是搜索到的教程,因为啥都不明白。
然后就是没有搜索框,就直接使用get的方式传值,归根结底还是html。让name="test"
输入的内容代替到了的是test的那一处,输入name="test">
然后弹框完成的不错
第二关是半自己做的,在第一关中明白了一点思路。
因为存在搜索框,使用的payload就和level-1的一样,也就是keyword="test">//
那为什么要在这个最后加上//
这个东西呢?就是因为这个可以把后面的">
这个东西给他注释掉。功能很强大的样子。
还是弹框完成的不错
第三关也是半看相关知识半做的,得知这一关要使用的知识是JavaScript事件相关的。在菜鸟教程学习了相关的知识。菜鸟教程-JavaScript事件
这一关对<``>
这两个标签采用了转义处理,然后这个引号是单引号而非双引号,所以在框内搜索1' onclick=alert(1)//
就可以了
然后就是这个//
的作用还是不太清楚,似乎是要注释掉后面的标签,不知道最后为啥就还可以执行这个事件反正是做出来了,还不错。
自己做的也是稀里糊涂的,用法和上一关的用法一样,就是这次的单引号换成了双引号,我正准备再尝试一次呢,就弹出完成的不错了。
输入框中的内容1" onclick=alert(1)//
ps:看到try harder!还以为很难。
使用">
一般语句尝试,过滤了script标签
使用find a way out!" onclick=alert(1)//
过滤掉了onclick标签
以上两个标签的过滤,都是对大小写都进行了过滤。
看了别人写的博客,发现还能使用,这个标签。
然后尝试使用伪链接方式假造一个超链接:
"> hahaha
,点击自己创建的链接,完成的不错。
和第一关相似的payload,然后把script
中的s
改为大写的S
,对小写的整体进行了过滤,但是未对大写的部分进行过滤
payload为break it out!">//
完成的不错。
第七关因为很多关键的词语都被屏蔽了,但是onclick
中的on
被直接替换为空,所以可以采用单词嵌套
来绕过屏蔽。
payload为:1" oonnclick=alert(1)//
完成的不错!
这里有一个添加友情链接的功能,然后试一下用javascript:alert(1)
然后就变成了javas_cript:alert(1)
,又试了一下大小写,同样也被过滤掉了。
最后是使用了Unicode编码了一次,才能绕过
过滤。
点击友情链接,完成的不错!
这里还是有一个添加友情链接的功能,然后试一下用javascript:alert(1)
然后就不合法,很多关键词都被过滤掉了。
后台的源码应该与下面的代码
实现的功能
类似:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level10.php?keyword=well done!";
}
script>
<title>欢迎来到level9title>
head>
<body>
<h1 align=center>欢迎来到level9h1>
';
?>
友情链接';
}
else
{
echo '
友情链接 ';
}
?>
<center><img src=level9.png>center>
payload的长度:".strlen($str7)."";
?>
body>
html>
发现要有http://
这个关键词,就把他放在//
的后面就行了。
因为对关键词进行了过滤,所以就算payload是javascript:alert(1)//http://
也是不行的,可以r
和i
之间放入一个%09
就是Tab制表符实现过滤。但是我并不知道具体的过滤的实现过程。
点击链接,完成的不错
查看元素后发现,page
里面有一些,准确来说是3个隐藏
的的标签
分别对这3个参数进行GET传参:http://web-labs.rinue.top/xss-labs/level10.php?keyword=well%20done!&t_link=test1&t_history=test2&t_sort=test3
,查看元素的代码为
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="test3" type="hidden">
由此可见,可对t_sort
这个参数进行传值。
下一步就是弹框了,payload为?t_sort=test" type="text" onclick="alert(1)
其中test" type="text" onclick="alert(1)
为传入的内容
完成的不错!
和level-10差不多,都是hiden的框框,但是模仿着10关的过程怎么都做不出来,看了别人做的。
原来是要修改referer
,最后使用了 HackBar2.1.3
(火狐的)然后构造payload直接就行了。
payload为" type="text" onclick="alert(1)
,点击已经显示出来的框框就行了。
完成的不错!
和第11关的差不多,模仿着第11关,一做就出来了。
这一关修改的是user-agent
,因为下面的t_ua
的值就是user-agent
的值。
payload
不用改,还是11关的payload
就行。
完成的不错!
和上两关的差不多,不过这一关所要修改的是cookies的值。
payload
稍有不同,用的是前两关用到的payload
之外,又多加了一部分。因为cookies的结构与其他的有些不一样。
payload为user=" type="text" onclick="alert(1)
,点击显示出来的框框。
完成的不错!
不会,先跳过,会了再回来。
根据writeup,这里的注入点为src
,
源码为:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level17.php?arg01=a&arg02=b";
}
script>
<title>欢迎来到level16title>
head>
<body>
<h1 align=center>欢迎来到level16h1>
".$str5."";
?>
<center><img src=level16.png>center>
payload的长度:".strlen($str5)."";
?>
body>
html>
过滤了script
,空格
,/
。使用换行符%0A
取代空格,在html中照样可以运行。
payload为:,这里的
1.jpg
是不存在的,所以触发了onerror
事件,导致弹窗。
完成的不错!
这一段是关键的代码。而url中
arg01=a&arg02=b
说明arg01
和arg02
分别取代的是a=b
中的前面(a)和后面(b)。
所以构造的payload为arg01=a&arg02=b onmouseover=alert(1)
,就行了,开始忙活了半天没有实现成功。原来是我的火狐浏览器的问题!
使用Microsoft edge
的时候才能成功,因为xsf01.swf
这个文件火狐里打不开,但是Microsoft edge
打得开
完成得不错!
跟上一关相似,一开始空格被转化成了%20
,然后把%20
改成%0A就可以了,还是火狐不可以,但是Microsoft edge
可以
payload为arg01=a&arg02=b%0Aonmouseover=alert(1)
。
完成的不错!进入下一关!
最后两关还没想出来。
似乎跟17,18差不多。
推荐我的博客