1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 墨者学院SQL手工注入靶场漏洞详解

墨者学院SQL手工注入靶场漏洞详解

时间:2019-05-19 01:03:21

相关推荐

墨者学院SQL手工注入靶场漏洞详解

墨者学院SQL手工注入靶场漏洞详解

目录靶场地址步骤详解

目录

靶场地址

该靶场由墨者学院安全工程师“墨者”所搭建,靶场环境为Nginx+PHP+MySQL,启动靶场只需1墨币(注册的时候会送十几个墨币并且不会重复消耗,只需要尽情练习即可),靶场地址:

/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe

步骤详解

观察首页,是否有注入入口

表单处无法进行注入,这时可以发现滚动栏有个通知,点开之后发现这是一个可能存在注入入口的页面。

通知页如下图所示:

地址栏带参数id=1,说明这个页面很有可能是从数据库返回的数据。

在地址栏参数部分添加sql语句and 1=2,查看是否可能实现注入。

页面出错了,说明参数确实在数据库进行了查询,则说明可以通过URL传递参数进行SQL注入。

参数增加语句order by [number]判断该被注入表的列数,经过尝试后发现当数字为5时页面出错,则说明该表共有4列。

获取到表的列数后,根据通知页面的id=1这个属性,可以推断出来页面所显示的内容应该是存在数据库该张表的某处。那么利用union语句,我们尝试去寻找这些内容具体是在表格的第几列。在参数上增加语句and 1=2 union select 1,2,3,4,因为union的前半句sql必然是错误的,因此只会构造出1,2,3,4这四列内容,那么此时页面显示的数字即是我们正在寻找的列。

如图,说明标题对应的列为表格第二列,内容对应的为表格第三列。

5. 利用第2、3列的内容会在该页面显示的这一特性,我们就可以尽可能地利用sql语句来获取我们需要的信息。在参数中输入and 1=2 union select 1,database(),user(),4,得到数据库名称为mozhe_Discuz_StormGroup,用户名为root@localhost

6. 我们知道每个MySQL数据库中都有名为information和mysql的数据库,所有的数据库信息都储存在information中,而MySQL的用户名的密码则存储在mysql的user表中。利用这两张已知表,可以查询到,参数中输入and 1=2 union select 1,database(),table_name,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup' limit 1

现在获取到了表名“StormGroup_member”。

有了表名,就可以继续获取列名。参数填入and 1=2 UNION SELECT 1,database(),column_name,4 from information_schema.columns where table_schema='mozhe_Discuz_StormGroup' and table_name='StormGroup_member' limit 1,1

(这里选择展示第2列是因为第1列是id,事先试一下就知道了)。

参数填入and 1=2 UNION SELECT 1,database(),name,4 from StormGroup_member limit 0,1,获取到name值为mozhe。

接着按照步骤7和8,同理获取到password列的值:

根据获取的用户名和密码,登录系统(获取的第一行用户名和密码不一定能正常登录,且密码为密文,需用md5进行简单的解密)。

至此,将系统下方显示的KEY值提交,整个破解的过程算是结束啦~~

提醒各位:注入的方法有很多种,希望大家多多尝试哈!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。