sql注入之靶场实操

本文详细介绍了如何通过SQL注入攻击靶场,包括利用御剑扫描获取后台管理页面,判断注入点类型,确认布尔型和延时注入状态,通过联合查询确定列数和显示位,最终获取数据库中的敏感信息,如管理员账号和密码。整个过程揭示了SQL注入漏洞的危害及利用方法。
摘要由CSDN通过智能技术生成

Sql注入之靶场实操

1.首先用小皮打开靶场,演示操作用的是文章管理系统cms的源码

2.可以用御剑扫描以下后台,但是因为我这边特殊原因,就假装我已经扫描了吧,得到了该网站的后台管理页面

3.因为我们是sql注入,通过注入的方式来获得他的账密,所以不去爆破他的弱口令。

4.我们随便点击两条新闻进行对比发现,他们除了url中【?id=33,?id=32】之外没有任何区别

所以由此可见,更改id参数网站会自动跳转页面

5.注入点判断

1.?id=35                 变换id参数+1/-1

2.?id=35’                 加单双引号判断是字符型还是数字型

加了单引号后有明显报错,根据报错判断存在数字型注入(如果报错里面有数字,就是字符型,如果没有,就是数字型)

3.判断是否有布尔类型状态

and1=1(真)       and1=2(假)

两次页面相同,一般认为没有布尔类型状态,不同代表有布尔类型状态(页面是否正常与数据库是否报错是两个问题)

4.判断是否有延时注入

?id=35 and sleep(5)

            点开控制台,找到网络

会发现后面的时间线是六秒钟,但是函数里是五秒,说明sleep()函数会对服务器响应造成影响

Ps:

1.如果页面+1/-1有变化,考虑联合注入

2.看看有没有报错,有报错就用报错注入,没有报错并没有回显就看是否有布尔状态

3.如果没有变化就考虑布尔类型状态

4.如果以上都没有,考虑延时注入

6.联合查询之判断列数

我们使用 order by 函数进行判断,因为我们要使用联合查询,并且在 ?id=35前面有一条select查询语句,要使用联合查询的话需要判断前面语句有多少列

这条语句的意思是按照第一个字段进行排序

当我们输入20时,发现报错提示,没有20 列

我们继续验证发现他有十五个列

我们使用union联合查询可以用数字把列数补齐

点击执行发现页面正常,因为我们不知道表名,但是根据mysql数据库特性,select语句在执行过程中并不需要指定表名。

7.判断显示位

因为页面显示的是第一章表的内容,那我们可以考虑让第一张虚拟表的查询条件为假,显示第二条记录从而构造sql语句

这里我用的是-33,也可以使用and 1=2,我们发现页面回显3,11两个数字,我们就可以把这两个数字用函数替换掉

这样就已经可以证明存在sql注入漏洞了

但是我们想拿到后台管理员的账密

我们把databases()换成hex(group_concat(table_name))就得到了十六进制,我们用bp去还原十六进制

用bp解码之后就得到了所有的表名,管理员账密可能存在cms_users表中,接下来需要查询表中的字段

Ps:为了避免单引号的使用,因为如果是cms_users出现的话要使用单引号,所以把它转化成十六进制,同时前面要加上0X,证明是十六进制

执行后发现得到了十六进制的数字放到bp进行解码

就得到了三个字段的内容,我们根据顺序查询username和password就可以

我们直接查表,用从concat函数,0x3a是冒号的十六进制

我们就得到了账号和加密后的密码

因为密码是用密文的形式保存在数据库中,观察密文得知是md5加密,我们可以用md5在线解密破解,md5解密加密来进行解密,可以忽略加密类型。

得到了管理员账号和密码

admin

123456

成功登入网站后台

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值