dvwa-sql injection(blind)

本文详细介绍了DVWA中的SQL盲注过程,包括判断注入类型、猜解数据库名、表名、字段名,并提供了基于布尔和时间的盲注方法。通过二分法和ASCII值比较来逐步揭示信息。
摘要由CSDN通过智能技术生成

        盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知。

        盲注分为基于布尔的盲注、基于时间的盲注以及基于报错的盲注。

 1.判断是否存在注入,注入是字符型还是数字型

2.猜解当前数据库名

3.猜解数据库中的表名

4.猜解表中的字段名

5.猜解数据

low

<?php 

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

    // Check database 
    $getid  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 
    $result = mysql_query( $getid ); // Removed 'or die' to suppress mysql errors 

    // Get results 
    $num = @mysql_numrows( $result ); // The '@' character suppresses errors 
    //@”就能把错误显示给抑制住,也就是不会显示错误,然后再抛出异常,显示自己定义的异常处理
    if$num > 0 ) {
    
        // Feedback for end user 
        echo '<pre>User ID exists in the database.</pre>'; 
    } 
    else {
    
        // User wasn't found, so the page wasn't! 
        header( $_SERVER'SERVER_PROTOCOL' ] . ' 404 Not Found' ); 

        // Feedback for end user 
        echo '<pre>User ID is MISSING from the database.</pre>'; 
    } 

    mysql_close(); 
} 

?> 

从源代码可以看出并没有什么过滤,而且返回来的话语也没有多大的提示。


基于布尔的盲注

1.判断是否存在注入,注入是字符型还是数字型

1.输入1 存在

2.输入1' AND 1=1 # 存在

3.输入1' AND 1=2 # 不存在


结合非盲注来判断,感觉就是要证明,这个注入点和数字型还是字符型有关,和谁有关输入一真一假就会有不同的变化。去看dvwa-sql injection

可以看出是字符型注入点。


2.猜解当前数据库名

猜解数据库的名字,我们只能猜数据库的长度先,因为这个注入点只会告诉你对错,不会直接说出数据库的名称的。

当输入1 and length(database())=4 # 的时候给出正确答案。

那么接下来肯定是猜四个位置上的字母啦,按照判断对错的话岂不是要弄4*26次,这里用了二分法

形如:1’ and ascii(substr(databse(),1,1))>97 # ...接着就是一系列的排查了,最后得到dvwa

substr(str, pos,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值