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_name
和Password
的值
当我们输入的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单引号字符型注入)