安全-Level3(xss-labs)
Posted 小狐狸FM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-Level3(xss-labs)相关的知识,希望对你有一定的参考价值。
前言
安装步骤跳过,源码可去github上下载
一、题目
源码如下
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
confirm("完成的不错!");
window.location.href="level4.php?keyword=try harder!";
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword value='".htmlspecialchars($str)."'>
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>
<center><img src=level3.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
二、绕过
[1]. 测试
在搜索框输入
& " ' < >
后发现只有单引号没有被HTML实体化
[2]. 第一处调用
php代码中的双引号是为了将html代码括起来,在实际输出内容的时候得看
双引号括起来的内容
[3]. 第二处调用
[4]. 构造payload
第一处因为尖括号都被过滤了,又没有单引号,所以只能看看第二个地方
第二处只能用单引号来构造闭合,所以不能构造新的标签,只能构造<input>
标签内新的属性
'属性名='alert(233)
属性名的话可以看自己需要去选择,相当于触发XSS的条件
输入了payload点击搜索之后,在输入框中一按下键盘就会出现弹窗
HTML 事件参考手册
'οnkeydοwn='alert(233)
以上是关于安全-Level3(xss-labs)的主要内容,如果未能解决你的问题,请参考以下文章