安全-Level3之属性构造(xss-labs)

Posted 小狐狸FM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-Level3之属性构造(xss-labs)相关的知识,希望对你有一定的参考价值。

前言

安装步骤跳过,源码可去github上下载

xss-labs下载

HTML 事件参考手册

xss-payload-list

安全-XSS脚本

一、题目

http://127.0.0.1/xss-labs-master/level3.php

源码如下

<!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)的主要内容,如果未能解决你的问题,请参考以下文章

安全-Level3(xss-labs)

安全-Level2之标签闭合(xss-labs)

安全-Level2之标签闭合(xss-labs)

安全-Level5之on事件绕过(xss-labs)

安全-Level1(xss-labs)

安全-Level1(xss-labs)