Sqli-labs 实验笔记之Less-1&Less-2&Less-3

零、前言

这次正式开始Sqli-Labs的课程,主要是Less-1、Less-2和Less-3的内容,这几节课主要是关于Sql语句的分析。这里我们将通过熟知的单引号测试法、and 1=1等手段来获取错误信息,然后通过错误来推断后台Sql语句的结构。

一、Less-1

GET – 基于错误 – 单引号 – 字符型

1.常规测试

系统运行正常

输入不同的id参数,返回不同的显示结果,id=1

id=4

2.后台Sql语句分析

根据网页返回结果猜测后台Sql语句为:

select * from table where id = input

单引号测试

分析错误信息

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

其中4是我们输入的

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

最外层两个引号是程序提示出错信息加上的,这说明中间的那对引号是Sql语句中的,所以修改我们的SQL语句为:

select * from table where id = ‘input’

3.构造注入语句

构造注入语句,必须保证整个Sql代码是正确的,要通过两种方法:

1.引号闭合: and 1=1   2.添加注释符:1 –+

使得我们插入的攻击代码不会出现语法错误,符合Sql语法结构

select * from table where id = 'input 攻击代码’

查看index.php源码,验证我们的猜测:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

二、Less-2

GET – 基于错误 – 单引号– 数字型

1.常规测试

id=1

这节课是数字型的,情况比字符型还要简单一些。

单引号测试  id='

2.后台Sql语句分析

出错信息为:near '' LIMIT 0,1' at line 1

最外层的单引号标识出错信息:

near '                             LIMIT 0,1' at line 1

猜测其后台Sql语句为:

Select * from table where id = input

3.构造注入语句

可以注入的代码有:

and 1=1

and 1=1 –+

攻击代码:

Select * from table where id = input 攻击代码

查看index.php源码,验证我们的猜测:

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

三、Less-3

基于错误单引号变形字符型

1.常规测试

id=1

id=8

根据网页返回结果猜测后台Sql语句为:

select * from table where id = input

2.Sql语句分析

单引号测试

出错情况与前两节不一样了,分析错误信息near ''8'') LIMIT 0,1' at line 1

最外层的一队引号是程序标识错的,8右边的引号使我们输入的,所以错误信息可以这样表示:

near '         '             8'             ') LIMIT 0,1       ' line 1

再试一下实验一和实验二中的测试语句

or1=1          or 1=1 –+

Or 1=1                    or 1=1 –+

3.构造注入语句

程序返回均出现错误,所以我们可以猜测实际的Sql语句为:

Select login_name,password from table where id=(‘input’)

于是可以构造如下语句:

') and ('1'='1

') and 1=1–+

Select login_name,password from table where id=(‘input 攻击代码’)

查看index.php源码,验证我们的猜测:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*