利用sql报错帮助进行sql注入 - 指尖的乐律

标签: 利用 sql 帮助 | 发表时间:2015-01-25 21:09 | 作者:指尖的乐律
出处:

我们可以利用sql报错帮助进行sql注入,这里以sql server 为例:

sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是select * ,那就必须将该表中所有列名都包含在group by 中;若少了哪个,就会报错,报错中会提示如下;

选择列表中的列 '列名'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

 

这个提示的列名是按该表中的顺序来的,这时我们可以利用这点进行sql注入中枚举所有列的工作;

 

先使用 select * from 表名, having 1=1 

这时报错中提示的便是第一个列名,

然后 select * from 表名, group by 第一个列名 

这时报错中提示的便是第二个列名,

以此类推,便枚举出所有列

类似的,同过报错提示,还可以知道许多信息,比如,查询条件中与列名实际类型不符合时,会有类型转换失败提示,如:

select * from Class
where name=3

会提示:在将 nvarchar 值 '高数' 转换成数据类型 int 时失败。

这样我们就能知道 name 列的第一行内容;

等等。

当然,数据库的报错一般情况下不会直接显示在应用界面,出现在应用界面的提示完全由程序决定;(ps:想必这也是会有错误页面的原因)!

 


本文链接: 利用sql报错帮助进行sql注入,转载请注明。

相关 [利用 sql 帮助] 推荐:

利用sql报错帮助进行sql注入 - 指尖的乐律

- - 博客园_首页
我们可以利用sql报错帮助进行sql注入,这里以sql server 为例:. sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是select * ,那就必须将该表中所有列名都包含在group by 中;若少了哪个,就会报错,报错中会提示如下;.

利用tcpdump抓取mysql sql语句

- - 学习笔记
这个脚本是我之前在网上无意间找个一个利用tcpdump 抓包工具获取mysql流量,并通过过滤把sql 语句输入. 脚本不是很长,但是效果很好. #!/bin/bash #this script used montor mysql network traffic.echo sql tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/;.

利用pl/sql执行计划评估SQL语句的性能简析

- - Oracle - 数据库 - ITeye博客
    一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在. 那么,作为开发人员,怎么样比较简单的利用执行计划评估SQL语句的性能呢. 总结如下步骤供大家参考:. 1、 打开熟悉的查看工具:PL/SQL Developer.

BlindSquare:利用 LBS 数据帮助盲人

- - 爱范儿 · Beats of Bits
最近 Foursquare 积累了数量庞大的真实地理位置数据,它拥有 2000 万名用户以及 20 亿次签到. 这些数据不但可以 帮助商户掘金,还可以帮助盲人导航. iOS 应用 BlindSquare 利用 Open Street Maps 来定位用户的位置,然后通过 Foursquare 的数据找出附近有什么地方,再通过苹果内置的 VoiceOver 或 Acapela Group 提供的文本转声音服务,将地名读出来,好让用户知晓,这样便为盲人创建了一个由语音构成的地图.

PL/SQL动态SQL(原创)

- - ITeye博客
使用动态SQL是在编写PL/SQL过程时经常使用的方法之一. 很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行SQL查询语句,对于这种情况需要使用动态SQL来完成. 再比如,对于分页的情况,对于不同的表,必定存在不同的字段,因此使用静态SQL则只能针对某几个特定的表来形成分页.

Derby SQL 分页

- - ITeye博客
    之前在网上看到有人问 Derby SQL 分页实现的问题,网上有人给出这样的解决方案,SQL 如下:. 其实,这样的分页查询,性能不理想,我试过在 300W 数据量中采用这种分页方式,需要 20~30秒之久;其实 Derby 10.6 以上版本有更好的分页支持,直接给出 SQL 实现如下:.

SQL Server--索引

- - CSDN博客推荐文章
         1,概念:  数据库索引是对数据表中一个或多个列的值进行排序的结构,就像一本书的目录一样,索引提供了在行中快速查询特定行的能力..             2.1优点:  1,大大加快搜索数据的速度,这是引入索引的主要原因..                             2,创建唯一性索引,保证数据库表中每一行数据的唯一性..

MySql动态SQL

- - SQL - 编程语言 - ITeye博客
13.7. 用于预处理语句的SQL语法. MySQL 5.1对服务器一方的预制语句提供支持. 如果您使用合适的客户端编程界面,则这种支持可以发挥在MySQL 4.1中实施的高效客户端/服务器二进制协议的优势. 候选界面包括MySQL C API客户端库(用于C程序)、MySQL Connector/J(用于Java程序)和MySQL Connector/NET.

sql优化

- - 数据库 - ITeye博客
是对数据库(数据)进行操作的惟一途径;. 消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低;. 可以有不同的写法;易学,难精通. 固定的SQL书写习惯,相同的查询尽量保持相同,存储过程的效率较高. 应该编写与其格式一致的语句,包括字母的大小写、标点符号、换行的位置等都要一致.

birt动态SQL

- - ITeye博客
birt动态SQL实现有三种方式:拼接SQL、绑定变量和让应用程序拼接,birt得到返回结果集方式. 在数据集中写SQL,如下:. 选中数据集,点script方式,在beforeOpen事件中写如下SQL:. 然后就可以了,当然,也可以不写第一步,直接所有的SQL都在beforeOpen中拼接. 但是,拼接SQL方式不仅复杂容易错,还会导致SQL注入风险.