SQL线上练习

Posted Jacob高

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL线上练习相关的知识,希望对你有一定的参考价值。

SQL Lesson 0: 让我给SQL做个自我介绍

入门视频(点我)

xuesql.cn,一个适合小白学SQL的网站,我们会由浅入深的介绍所有有关 SQL 的知识, 每一个章节是一组相关的SQL知识点; 并且会配备一组动手练习任务。

这个网站特别适合学完某种知识就想马上动手的 实践党. 如果您在学习其他相关的SQL课程或已经在工作中展开了SQL实践,也可以把它作为巩固SQL知识的小工具。

那么什么是 SQL ?(What is SQL?)

SQL, 全称为Structured Query Language(结构化查询语言)。 要讲SQL就绕不开database(数据库), 平时所说的数据库,一般就是指的 Relational database(关系型数据库).

大家知道数据库是用来存储大量数据的一种软件,那么SQL呢是用来操作数据里的数据,具体来说SQL可以做数据查询,数据更新,写入数据等等。

如果把数据库比作盘子,那数据就是盘子里的SQL则是你的筷子
因为SQL和数据库是天生的一对,又相对简单,目前世界上大部分网站和APP背后的数据都是建立在SQL数据库基础之上。

小贴士:有哪些流行的数据库?

大家应该或多或少听说过一些数据库比如 SQLitemysqlPostgresOracle 和 Microsoft SQL Server. 这几个数据库(可以理解为软件)是目前比较流行的一些数据库。所有这些数据库都支持标准的 SQL,换句话说,你学会了SQL就可以对这些数据库做数据操作了! 当然上面的每一种数据库都有自己的特性和适用范围(想象一下你家有 不同尺寸的盘子).

关系型数据库(Relational databases)

在学习SQL语法之前有必要解释一下什么是关系型数据库(Relational databases)?数据库由若干张(Table)组成,这里说的数据Table很像Excel里的表; 正如Excel里的表格,Table也是由 行(rows)列(columns)组成

一个Table存储一个类别的数据,每一行是一条数据,每一列是这种数据的一个属性; Table就像一个二维的表格,列(columns)是有限固定的,行(rows)是无限不固定的

举个例子, 比如我们数据库里有一张表(Table). 是用来存储世界上所有的狗,每一行(rows)是一条狗的信息。那么你会在这个狗Table里存储 哪些狗的属性列(columns)呢?比如 编号,名字,体重,身高,品种,年龄,毛发颜色?。让我们来看一下这张表,暂且就叫表 Dog吧!

Table(表): Dog
Id # Name(名字) # Weight(体重) # Height (身高) # Type (品种) # Age (月龄) # Color (肤色)
1 Mike 3 28 吉娃娃 10
2 Sala 6.5 40 柴犬 15
3 黑狮 21.5 45 藏獒 26
4 大圣 15 42 牧羊犬 20
5 Boy 5.5 24 蝴蝶犬 6
... ... ... ... ... ... ...


上面就是一个Dog表的简单展示,像这样一个狗数据库里,除了这张狗(Dog)表,还可能存在其他的表,比如有一张表是存狗品种信息, 另外有一张表是存狗主人信息的 ...

我们学习SQL, 其实最后目的就是在类似这张Dog表数据基础上, 可以通过SQL来回答诸如以下的一类问题: "现在全世界名字叫 \'Mike\'的狗有几条?", 或者 "有多少条狗的毛发是 红色的?", 等等。 通过SQL我们可以方便的去获取,统计这些信息,在接下来的更多章节中你会有更深的体会.

怎么做任务练习?

所有练习都会有表(Table)的数据展示,在表下方有一个可以输入 SQL(SQL语句) 的编辑器,您需要理解右侧的任务列表并写出正确的SQL . 当然,您也可以直接在编辑器里输入 其他的SQL,每次输入SQL都会立即执行,并把结果显示在表数据的位置!

第一次的练习很简单,您只需要按照任务列表里的SQL,在编辑器里抄一遍即可(抄完SQL注意下表格里的数据有何变化)。这个练习主要是希望你通过互动对SQL有一个初步映像. 那让我们赶紧开始玩吧 ..

注意我们练习中的表不是狗表,而是一张存储了电影信息(movies)的表

Table(表): Movies 
提示信息
SQL为空或数据为空
 
 
 
 
 
1
--请输入sql
 
 
重置
练习 do it — 请完成如下任务
  1. 【初体验】这是第一题,请你先将左侧的输入框里的内容清空,然后请输入下面的SQL,您将看到所有电影标题:
    SELECT title FROM movies
  2. 【初体验】请输入如下SQL你将看到4条电影(切记先清空数据框且出错要耐心比对):
    SELECT title,director FROM movies WHERE Id < 5
  3. 【初体验】输入如下SQL你将看到电影总条数:
    SELECT count(*) FROM movies
  4. 【初体验】SQL可以直接做计算,下面的SQL计算1+1的和,请输入:
    SELECT 1+1
我不会做求助!求助!

 

如何使用基于整数的手动SQL注入技术

今天,我将教大家如何使用基于整型的手动SQL注入技术来对MySQL数据库进行渗透测试。提醒一下,这是一篇写给newbee的文章。话不多说,我们直奔主题!

SQL注入线上实验室

1. 初学者可以使用这个网站来练习自己的SQL注入技术。

2. 访问线上实验室,请跳转【http://testphp.vulnweb.com/artists.php?artist=1】。

第一步:对查询语句动手

testphp.vulnweb.com/artists.php?artist=1
testphp.vulnweb.com/artists.php?artist=1′

如何使用基于整数的手动SQL注入技术

此时,我们通过修改查询语句成功接收到了数据库返回的错误消息。但是,我们却没有收到关于输入数据(我们所添加的那个单引号)的错误提示,这也就说明我们的输入已经成功了。现在我们就可以知道,我们所输入的这个字符串(单引号)是不会让数据库返回相关错误信息的,接下来我们尝试修复一下这个问题,去掉单引号:

如何使用基于整数的手动SQL注入技术

上图说明,我们在查询语句中采用了基于整型的方法之后就不会在触发错误了,这也就是我们所说的基于整型的SQL注入方法。

第二步:查询数据库条目

确认了漏洞存在之后,我们就可以尝试弄清楚这个数据库表中到底有多少列了,这里我们可以使用order by命令实现。我们可以不断尝试输入任意值的数字来测试数据库中有多少列。

如何使用基于整数的手动SQL注入技术

上图中,我输入了数字4,我想要查询4列,但是得到了一条错误提示。所以我得尝试其他数字,试试3呢?

如何使用基于整数的手动SQL注入技术

大家可以看到,这里没有返回SQL错误。是的,就是3列!

第三步:查询后台数据库表和表名

接下来,我们需要获取表路径,这里使用union all select:

如何使用基于整数的手动SQL注入技术

上图表明,union all select语句返回了表.2和3的表路径:

如何使用基于整数的手动SQL注入技术

上图显示了database() & version()命令的执行结果,并拿到了数据库名和版本信息。

大家可以看到,数据库名为acuart,版本信息为5.1.73-0ubuntu0.10.04.1。

第四步:导出数据库表

Groupconcat()函数可以从一个group中获取与非空值级联的字符串,这里我们可以使用这个函数来枚举出数据库中所有的表。除此之外,我们还可以使用InformationSchema来查看关于数据库中对象的元数据:

如何使用基于整数的手动SQL注入技术

如何使用基于整数的手动SQL注入技术

上图显示的是目标数据库中导出的所有表信息,即:carts,categ,featured,guestbook,pictures,products,users。

第五步:导出数据库表中所有列的数据

接下来,我们导出目标数据库中user表的所有数据:

如何使用基于整数的手动SQL注入技术如何使用基于整数的手动SQL注入技术

从上图的结果中可以看到,这个数据库表中包含的列条目有:uname,pass,cc,address,email,name,phone,cart。

第六步:导出所有的用户名和密码

接下来,我们就可以导出目标数据库中所有的用户名及密码了:

如何使用基于整数的手动SQL注入技术

这样一来,我们就成功拿到了用户名为test且密码为test的用户信息了。

后话

希望大家可以不断练习,并尝试导出数据库表中包含以下列名的数据:address, email, name, phone, cart。

最后,祝大家Happy Hacking!

*参考来源:gbhackers,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

以上是关于SQL线上练习的主要内容,如果未能解决你的问题,请参考以下文章

sql sql里面的代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Microsoft SQL Server 代码片段收集

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

缺少 SQL SERVER 2014 代码片段

sql Oracle代码片段