Sqli-labs之Less-3和Less-4

                                              Less-3    ==>字符型注入

获取-基于错误-带括号的单引号-字符串

                                                                 欢迎 Dhakkan
                                                   请输入ID作为带有数字值的参数

分别尝试将 ?id=1    ?id=1'   ?id=1"  添加到url中,发现?id=1'报错,说明是字符型注入(初步认定为单引号注入而返回的结果中包含有小括号所以可推定出==>带括号的单引号注入)

翻译:您的SQL语法有误。 检查与您的MySQL服务器版本相对应的手册,以在第1行的 "1")LIMIT 0,1'附近使用正确的语法

这里它意味着使用的查询是:
Select login_name, select password from table where id= ('1')

对比源码:

所以我们再用这样的代码来进行注入:
?id=1′) –- #

这样我们注入成功。

接下来就是要猜字段数,爆数据库,爆表名,爆字段,爆数据。方法和Less-2大同小异,

只需将所有的?id=1  ?id=-1改成?id=1')   ?id=-1')来进行实验。

在这里特别说下爆数据库的两种方法:

1.爆所有数据库:

2.爆当前表所属的数据库

                                         Less-4  ==>字符型注入

获取-基于错误 -双引号 - 字符串

                                                            欢迎 Dhakkan
                                                 请输入ID作为带有数字值的参数

分别尝试将 ?id=1    ?id=1'   ?id=1"  添加到url中,发现?id=1" 报错,说明是字符型注入(初步认定为双引号注入而返回的结果中包含有小括号可推断出==>带括号的双引号注入)

翻译:您的SQL语法有误。 检查与您的MySQL服务器版本相对应的手册,以在第1行的 ' " 1" ")LIMIT 0,1'附近使用正确的语法

这里它意味着,代码当中对 id 参数进行了 "" 和 () 的包装。

对比源码:

这两条语句合并在一起就是:$sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1";

所以我们再用这样的代码来进行注入:
?id=1") –- #

这样我们注入成功。

接下来就是要猜字段数,爆数据库,爆表名,爆字段,爆数据。方法和Less-2大同小异,

只需将所有的?id=1  ?id=-1改成?id=1")   ?id=-1")来进行实验。

总结(Less-1  —— Less-4):

这四道题属于基于错误的 SQL 注入。通过源码我们可以看出他们的规律:

                                                

1.字符型:

2.数字型

3.字符型:

4.字符型:

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

总的来说他们主要切入点是 引号的闭合问题,而且他们都是对回显的情况下进行注入,属于最基本,也是最简单的SQL注入。

发布了31 篇原创文章 · 获赞 35 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39934520/article/details/104885321