Sqli-Labs之less-1

说在开头:文章是我通过查询资料后按照自己的理解总结出来的,所以如果有说法不对的地方,欢迎大佬指正~


1.进入less-1的题目以后,我们可以看到这道题的提示“请输入ID作为带数值的参数”:
在这里插入图片描述
2.我们根据题目提示,尝试在URL中加上“?id=1”、“?id=2”,可以看到看到从数据库中查询到的用于login登录的用户名和密码:

  • 我们要找的是网站后台管理员的用户名和密码,目的是拿到网站的权限,从而去拿到服务器权限。
  • 但在这个靶场中,它的主要目的是让你学会使用SQL注入去拿数据库中的数据,所以我们最终得到的是所有用于login登录的用户名和密码。

在这里插入图片描述
在这里插入图片描述
3.判断是否为注入点。

  1. 首先先试一下最经典的“and 1=2”,可以看到,我们在后面添了“and
    1=2”这个错误的条件,但是页面没有报错依然保持原样,所以可知这个方法测试不出来:

在这里插入图片描述

  1. 我们接下来尝试在参数后面加括号、单引号、双引号之类的,来构造错误的查询语句,从而触发数据库报错。
    经过测试,发现用单引号能触发错误,使页面报错。

在这里插入图片描述

  • 在这里,我们所说的“报错”是指页面发生变化,不管它回显的页面是什么、不管页面出现了什么提示,只要页面发生了变化,就算是触发了数据库报错。
  • 还有一些进阶的情况,即出现“不要搞后台”之类的警告,则说明设置了关键字的过滤规则,可以视情况而定选择修改大小写、用/**/代替空格等等。方法不固定,根据情况灵活变化,反正只要能绕过规则就行了。
  1. 报错后,在其后添加注释符,如果回显恢复正常,那么就是注入点。
    注释符可以是#、–+、–空格。
    经过测试,–+能使页面恢复正常。

在这里插入图片描述
至此,注入点判断成功。

4.判断字段数量。我们找到注入点以后,首先用order by来猜解字段数量。

  • 这里需要注意的一点是,当猜的字段数>真实字段数时,页面会报错;但猜的字段数<=真实字段数时,都不会报错。所以一定要找到那个临界的值才行,那才是真实的字段数。
    在这里插入图片描述
    在这里插入图片描述

通过测试可知,字段数为3。

5.接下来就是判断可显字段。

  • 这里遇到一个问题,当id为1时,输入查询语句以后并没有看到回显的数字,这是因为id为1时在数据库中是存在数据的,在存在数据的情况下,会优先输出数据库中的内容:

在这里插入图片描述

  • 一般情况下,我们可以在参数前加一个负号。
    (如果加负号会报错的话,就换一个数据库里没数据的id参数)

在这里插入图片描述
可以看到,可显字段是第2个和第3个。

6.爆出当前用户名和数据库名:
union select 1,user(),database()
在这里插入图片描述
7.根据数据库名爆出数据表名:
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=”security”

  • 通过group_concat()函数可以显示字段中的所有内容,否则只显示第一个。

在这里插入图片描述
8.根据数据表名爆出字段名:
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=’users’
在这里插入图片描述
9.爆出所有用户名和密码:
union select 1,group_concat(username),group_concat(password) from users
在这里插入图片描述
less-1过关!

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值