代码审计新手起步篇--DVWA

本文介绍了DVWA的几个常见安全漏洞,包括Brute Force、Command Injection、CSRF、File Inclusion、File Upload、SQL Injection及其不同级别的防御措施。通过审计代码,作者探讨了如何利用和绕过这些防御,为初学者提供了理解漏洞原理的基础。
摘要由CSDN通过智能技术生成

开始学习PHP代码审计,看网上大表哥推荐最好先审计一下DVWA,搞清楚这些漏洞的原理,然后再进行审计的深入学习和实战。

 

Brute Force

关于爆破我就只是简单说一下就可以了,感觉没啥好说的,而且他这个是没有验证码的,如果查询错误只会休眠一段时间

else { 
        // Login failed 
        sleep( 2 ); 
        echo "<pre><br />Username and/or password incorrect.</pre>"; 
} 
//Medium和High都只是休眠一段时间

在Impossible当中,登陆账号错误会进行计数,如果错误次数超过3次,就会进行账号登陆限制,经过一段时间过后才会解封。

大概代码是这样

//定义允许错误的次数
$total_failed_login = 3;
//如果登陆失败就会更新错误次数
SQL语句:UPDATE users SET failed_login = (failed_login + 1) WHERE user = (:user) LIMIT 1;
//如果错误次数超过3次,就冻结账号
if( ( $data->rowCount() == 1 ) && ( $row[ 'failed_login' ] >= $total_failed_login ) )  { 
        // User locked out.  Note, using this method would allow for user enumeration! 
        //echo "<pre><br />This account has been locked due to too many incorrect logins.</pre>"; 

        // Calculate when the user would be allowed to login again 
        $last_login = $row[ 'last_login' ]; 
        $last_login = strtotime( $last_login ); 
        $timeout    = strtotime( "{$last_login} +{$lockout_time} minutes" ); 
        $timenow    = strtotime( "now" ); 

        // Check to see if enough time has passed, if it hasn't locked the account 
        if( $timenow > $timeout ) 
            $account_locked = true; 
}

 

Command Injection

这个漏洞的原理就是满足条件之后就执行shell_exec()这个函数,可以执行系统命令

Windows下

&&  前一个命令执行成功才会执行后一个命令(如果前一个命令正确,后一个错误,则只执行前一个)

&   两条命令没有直接关系,互不影响

||  只要其中一条命令正确即可执行,如果都正确,只执行前一条命令(在Windows命令行下是这样)

|   管道符,要两条命令同时都正确时才能执行,且只显示后一条命令的执行结果

Linux:

&&  第一条命令正确,才开始执行,执行并显示所有正确的命令

&   从后面的命令开始往前执行并显示正确命令的执行结果

||  如果两条命令都正确,只执行第一条&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值