源代码:
if(isset($_GET['submit'])){
if(empty($_GET['message'])){
$html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
}
if($_GET['message'] == 'www.baidu.com'){
$html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
}else {
//输出在a标签的href属性里面,可以使用javascript协议来执行js
//防御:只允许http,https,其次在进行htmlspecialchars处理
$message=htmlspecialchars($_GET['message'],ENT_QUOTES);
$html.="<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
}
}
<div id="xssr_main">
<p class="xssr_title">请输入一个你常用的网站url地址,我就知道你是什么人</p>
<form method="get">
<input class="xssr_in" type="text" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
<?php
echo $html;
?>
</div>
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
与之前那关不同,这关的单引号也被htmlspecialchars函数转化为了HTML实体,因此再使用上一关的通关攻略是不行的。
果不其然
根据提示我们调用JavaScript
在HTML中使用<a>
标签来创建链接。如果要通过点击该链接触发JavaScript函数的话,可以将JavaScript代码放置在href
属性值内部或者使用事件处理程序(event handler)。
直接在href
属性中添加JavaScript代码:
<a href="javascript:myFunction()">点击我</a>
这样当用户点击链接时,会立即执行名为myFunction的JavaScript函数。
这里我们修改一下,输入:
JavaScript:alert("111")
成功!