sql-labs(1~~4关)漏洞分析

Posted 山川绿水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql-labs(1~~4关)漏洞分析相关的知识,希望对你有一定的参考价值。

sql-labs(1~~4关)漏洞分析

1.sql注入的类型

根据注入位置数据类型可将SQL注入分为两类:数字型和字符型

例如:
数字型:select * from 表名 where 字段名(id) = 用户输入的id
id = 1,2,3…

例如:
数字型:select * from 表名 where 字段名(id) = ‘用户输入的id’
id = ‘1’,‘2’,‘3’…

2.GET基于报错注入的SQL注入发现

通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、括号)、反斜杠\\来探测URL中是否存在注入点。

前面4关都是,有很明显的报错回显的。

3.对每一关的报错回显进行分析

第一关基于GET型的报错,单引号的字符串注入


测试的提示说,请我们输入一个数字作为id的参数

当我们输入的id=1时,回显出来login_namePassword的值


当我们输入的id=1’时,回显报错

我们对报错的内容进行分析''1'' LIMIT 0,1'
单引号是要闭合的,最左边和最右边的单引号表示字符串的错误信息,真正的报错内容为'1'' LIMIT 0,1
然而,我们输入的内容为1',那么原来的语句就是'id' LIMIT 0,1
可以揣测SQL语句为:

select login_name,password from 表名 where id = 'id' limit 0,1

4.对每二关的报错回显进行分析

当我们输入的id=1’时,回显报错

我们对报错的内容进行分析'' LIMIT 0,1'
单引号是要闭合的,最左边和最右边的单引号表示字符串的错误信息,真正的报错内容为'LIMIT 0,1
然而,我们输入的内容为1',那么原来的语句就是id LIMIT 0,1
可以揣测SQL语句为:

select login_name,password from 表名 where id = id limit 0,1

4.对每三关的报错回显进行分析

当我们输入的id=1’时,回显报错
单引号 +括号


我们对报错的内容进行分析''1'') LIMIT 0,1'
单引号是要闭合的,最左边和最右边的单引号表示字符串的错误信息,真正的报错内容为'1'') LIMIT 0,1
然而,我们输入的内容为1',那么原来的语句就是('id') LIMIT 0,1
可以揣测SQL语句为:

select login_name,password from 表名 where id = ('id') limit 0,1

4.对每四关的报错回显进行分析

当我们输入的id=1’ ,id=1),id=1’)或id=1’))))时,不回显报错


mysql中"“中的1,1’,1”,1)’,1’)))))中的内容会被隐形转换成1,本道题中,我们可以使用反斜杠进行转义或输入栓引号,就是使用栓引号来进行分析
当我们输入的id=1"时,不回显报错

我们对报错的内容进行分析'"1"") LIMIT 0,1'
单引号是要闭合的,最左边和最右边的单引号表示字符串的错误信息,真正的报错内容为"1"") LIMIT 0,1
然而,我们输入的内容为1',那么原来的语句就是(''id") LIMIT 0,1
可以揣测SQL语句为:

select login,password from 表名 where id = ("id") limit 0,1

ps

SQL注入打牢基础,关键明白漏洞原理,找到注入点,后续就很得心应手了

以上是关于sql-labs(1~~4关)漏洞分析的主要内容,如果未能解决你的问题,请参考以下文章

sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

LAMP搭建sql-labs渗透测试环境

sql-labs

sql-labs(1~10)详细思路