对于注入而言,错误提示是极其重要。所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要。本问讨论下关于几类错误和他产生的原理,希望对读者有所帮助。
错误提示主要有逻辑错误和语法错误以及脚本运行错误三类。
一:逻辑错误
简单的例子是1=1 1=2这两个,1=1与1=2页面不同的原理是什么?以$sql = "select * from news where id=$_GET[id]"为例。
select * from news where id=1 and 1=2产生的结果集为NULL,然后程序取值得时候,就会去出空值,无法显示。当然有的程序发现SQL执行结果集为空,就立即跳转,效果就不显鸟。值得注 意的是,有的如Oracle Postgresql的数据库在结果集为空情况下会再页面上表现字符型null字样,这算是个特点。如果使用or条件,比如
select * from news where id=1 or 1=1
和and 1=2得结果正好相反,他的结果集十分庞大。如果SQL语句如此,再加上程序是循环读取结果集(一些编程上的陋习)那么会取出所有结果,结果可能运行很 慢,在数据量巨大的oracle上容易出现。这个例子会出现什么呢,一般程序取出结果集中的第一条结果,那么很可能已经不是id=1的那条新闻了,这就是 由些小菜奇怪有时候or 1=1页面会发生变化的原因。
归根到底,都是结果集不同造成的,灵活掌握是关键,这并非单纯的经验问题。
二:语法错误
语法错误时比较熟悉的,比如对于SQL Server,PgSQL,Sybase的注入错误提示都很重要,因为利用它的特性来获取信息很快速。语法错误造成的结果可能是SQL错误而中断脚本执 行,但是脚本或服务器设置屏蔽错误的情况下,程序得到继续执行,但是结果集不存在,连NULL都算不上,反馈给***者的很可能就是结果集为空的情况,其实 这是脚本的处理结果。当然Oracle PgSQL表现null。
三:运行错误不用说了,典型的就是利用mysql注入benchmark让脚本运行超时得到物理路径,以及利用超时来获得不同的表征进行盲注入。
四:逻辑错误和语法错误的结合。
当表征极不明显的时候,利用类似iff这样的函数进行正确与否的区分有时候会成救命稻草。因为语法错误和逻辑错误的表征大多数情况都会有不同。
iff(1=1,1,'no')这个会产生结果1 注意是数字,而iff(1=2,1,'no')这个会产生'no' 是字符。那么
id=1 and 1=iff(1=1,1'no')正确是必然成立的,而id=1 and 1=iff(1=2,1,'no')会因为类型不同发生语法错误。不过可惜的是似乎支持iff函数的数据库不多,呵呵。
现在讲结果集在注入中的利用原理。
一:从'or''='开始
这是学习SQL注入的初级课程,登陆漏洞。我简略从SQL结果集上分析。
$sql = "select top 1 * from admin where username='$username' and password=md5('$password')";
显而易见,'or''='的加入使SQL语句返回了一条记录,这才使验证通过。
二:再看现在的验证中的SQL
$sql = "select top 1 * from admin where username='$username'";
结果集不为空才根据抽取的记录集中的密码值与用户提交的密码MD5值进行比对来进行验证。这样,你突然发现'or''='的计策失败鸟,但是后台明明有注 入,这就是验证方法造成的。跟进这个验证过程,'or''='的确产生了一个结果集(admin表中的第一行记录)但是遗憾的事,后来的密码比对没法通 过,验证无法成功。
思路很简单,网上有案例,我重在原理,利用union来产生想要的结果集。比如'and(1=2)union select top 1 username,'123456得md5值',id from admin where username='admin
这样产生了admin的记录信息,但是记录集中的密码那个位置的值被替换成了123456的md5值,这样,使用admin 123456通过验证并且继承他的权利。
更有甚者全部用'xxx'的方法来盲狙,这就很“过分”鸟。不过在sql2000 sybase这些严格要求类型匹配的数据库来说,这样不能撼动“管理员登陆”的,因为执行时发生了语法错误,结果集为NULL。另外以前 ewebeditor注入漏洞来上传马也是这个union操作结果集来达到目的的经典案例。
后记
不知道还续写这篇文章不,我把这个任务给读者吧,呵呵

转载于:https://blog.51cto.com/mrsun/196922

SQL查询结果集对注入的影响及利用相关推荐

  1. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  2. DB2 SQL查询结果集自动编号、返回条数范围控制研究

    摘要: DB2 SQL语句实现查询的记录自动编号.并根据编号进一步实现记录范围控制.分页查询. 环境: IBM DB2 Universal V9.1 Windows XP Professional 要 ...

  3. VBA SQL查询-记录集转数组

    目录 1 建立连接和查询 2. Recordset 对象(记录集)转数组 1 建立连接和查询 Sub 查询()Dim Cnn As Object, Rst As Object, i&, j&a ...

  4. sql查询结果集根据指定条件排序的方法

    oracle认为 null 最大. 升序排列,默认情况下,null值排后面. 降序排序,默认情况下,null值排前面. 有几种办法改变这种情况: (1)用 nvl 函数或decode 函数 将null ...

  5. dotTrace 6.1帮你理解SQL查询如何影响应用性能

    dotTrace是JetBrains公司旗下的一款.NET应用程序性能瓶颈检测工具.该工具是ReSharper旗舰版的一部分,也可以单独安装.近日,dotTrace 6.1发布,主要增加了人们期待已久 ...

  6. 利用MyBatis的动态SQL特性抽象统一SQL查询接口

    1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...

  7. 视图函数中进行sql查询,防止sql注入

    视图函数中进行sql查询 import pymysql # 创建连接 use_unicode=true指定字符的编码.解码格式,进行自动编码解码,mysql数据库的编码格式为gbk,而项目数据库为ut ...

  8. SQL查询语句注入实战(手注,显注)

    目录 前言 条件查询 查询顺序 Limit限制结果 联合查询 显错位 SQL内置函数 自带数据库和表 mycli辅助命令 Sql注入类型 实战靶场 判断类型是否存在注入点,类型 看看他有几个字段 数据 ...

  9. MyBatis联合主键结果集与SQL查询结果不一致的问题

    2019独角兽企业重金招聘Python工程师标准>>> 一.问题 如果select中的联合主键组合成的key不唯一(当只select部分联合主键时可能发生),那么就会把相同的key合 ...

最新文章

  1. mxnet基础到提高(6)--梯度,反馈与标准化(归一化)
  2. 结构体数组实现的简易学生信息管理系统
  3. 海康威视Web端视频开发
  4. socket自定义框架
  5. 电子计算机职业40201,天津滨海中等专业学校
  6. 只需2行代码,1分钟教你实现微信多开
  7. oracle jdbc流式读取,在 Oracle Database 适配器中流式传输大型对象数据类型 - BizTalk Server | Microsoft Docs...
  8. 对网络化云计算时代的美好憧憬
  9. hdfs 路径 could not be cleaned up
  10. windows计算机锁屏的快捷键是什么,win7的锁屏快捷键是什么 win7锁屏快捷键介绍【图文】...
  11. 【物联网(IoT)开发】Arduino 简介
  12. Python 如何被证明是 2021 年的转折点语言
  13. 【有利可图网】PS实战教程25:巧用PS设计制作滑落一半的海报
  14. 精英都是方法控,做人做事必备的100套思维框架工具
  15. archlinux安装到美化
  16. Nova Battles是2022年值得关注的链游
  17. PyCharm + PySide2/PySide6 外部工具配置
  18. 计算机专业哪些证书可以抵个税,个税专项附加扣除中继续教育哪些证书可以扣除?...
  19. 利用matlab与eeglab对EEG信号(脑电)进行处理分段与保存
  20. ysdk接入,支付提示:系统繁忙,请稍后再试 (1003-498686-498686)

热门文章

  1. android 滑动模糊渐变,Android UI效果实现 滑动模糊渐变效果实现
  2. android 释放 so,这 10 个值得开启的隐藏功能,让你的 Chrome 释放更多潜力
  3. 雀姬 服务器维护,《雀姬》功能界面介绍(多图)
  4. 工作汇报ppt案例欣赏_领导最喜欢的工作汇报PPT,原来长这个样子!网友:教科书级案例...
  5. RocketMQ 高级功能介绍
  6. iOS MKMapView 地图视图
  7. 我国在计算机科学领域故事,我国巨型计算机领域的一代天骄
  8. coba mysql_在Android Studio中将数据从MySQL数据库显示到TextView中-问答-阿里云开发者社区-阿里云...
  9. mysql通过视图查看_MySQL教程92-MySQL查看视图
  10. Dockerfile镜像优化方案指引