DVWA File upload& 一句话木马

一句话木马是什么:
例如:
@的意思就是后面是啥东西执行时都不要报错
把eval 里面的字符串当作代码执行
$_POST[young] 超全局变量
用young参数把需要执行的语句传进去,然后通过eval里去执行这个语句,达到了目的。
例如需要输出young
DVWA File upload& 一句话木马_第1张图片在这里要注意几个问题,首先就是在语句的最后要加上;作为语句的结束。
在本地搭建靶场时,如果需要burpsuite抓包一定不要访问localhost或者127.0.0.1,因为这样抓不到包,可以看自己本机的ip是多少然后访问。
在这张图片可以看出young被输出出来
可以用php中的一些函数查看文件
这就是为什么用菜刀连接就可以做很多事情,其实就是你的操作变成了命令然后通过你输入的参数传了进去,然后执行。 密码即为POST中的参数。 终于懂了

接下来就是以DVWA中的File Upload模块来学习一下文件上传的几种姿势。

  1. Low级别的上传
    low级别的没有加任何的防护。直接上传成功。

DVWA File upload& 一句话木马_第2张图片
在这里要学习的点就是…/的含义。…/的意思就是向上返回一层文件夹,在这里目录已经给了,这样就很简单了。直接访问我们上传的一句话木马,就可以做我们想做的事情了DVWA File upload& 一句话木马_第3张图片
刚刚我第一次尝试的时候输入的是young = echo
结果不能输出,所以是不能在参数后面等号后面加空格的DVWA File upload& 一句话木马_第4张图片
通常可以用phpinfo来证明getshell。

  1. Medium级别
    先看一下源码
    DVWA File upload& 一句话木马_第5张图片对upload_type进行了验证,必须为image/jpeg或者是image/png才可以上传
    在这里我卡了很久,不知道为啥一直上传不上去,原来是因为模式设置一直是impossible。。
    在这我有两个思路,一是上传test.php,然后更改type绕过。二是上传test.png,然后更改文件后缀名来绕过。
    DVWA File upload& 一句话木马_第6张图片在这里插入图片描述
    DVWA File upload& 一句话木马_第7张图片

  2. High级别
    首先看一下源代码。
    在这里插入图片描述strtolower函数是把字符串转换为小写,实际上还是验证文件的后缀名。和medium其实是一样的。但是后面加了个getimagesize函数,这个函数会检测这个文件是否为图片,并检验长宽高,所以这个地方我们要上传一个图片马。
    那么接下来就是图片马的制作了。用cmd下的命令即可,原理就是将一个图片和一个php文件以16进制的方式整合到一起。
    命令为:copy /b 8.png + test.php 222.png
    生成了一个222.png 我们用notepad++ 打开看一下DVWA File upload& 一句话木马_第8张图片邪恶的一句话木马已经被写到后面了。
    接下来就是上传了,但是有一个问题,我们的一句话木马是图片格式,不能被解析。这里有一个公式说的很好。
    上传成功+知道路径+成功解析=getshell
    现在我们已经做到了前两步,但是无法成功解析。
    所以我们需要文件包含漏洞将其解析。
    文件包含漏洞这里先填一个坑吧。。还是不太会。学会了再写一篇博客,专门学习文件包含。
    这里的思路就是把生成一句话木马的php和图片合成到一起,然后利用文件包含漏洞进行解析,新生成一个一句话木马,然后getshell。
    生成一句话木马的代码如下:

    ');

    fclose($op);
    ?>

预先可知dvwa存在文件包含漏洞,将图片马上传后解析,然后进行验证。目前来说是失败了。。
你说为啥失败。请看下面的代码。。
DVWA File upload& 一句话木马_第9张图片fwrite后面的指针名字写错了,能搞对才怪哦。

改过来之后就能生成一句话了。要注意的一点是:
DVWA File upload& 一句话木马_第10张图片是在前面的这个文件夹下生成的一句话木马。
接下来进行测试,看看生成的一句话是否可用
DVWA File upload& 一句话木马_第11张图片一句话生成成功。
总结一下思路就是,先生成一个包含有生成一句话木马的图片马,然后上传。再由解析漏洞将其解析,然后将图片马解析,生成对应的一句话木马,getshell。
这应该就是传说中的组合拳了。

4.impossible
我认为这个是来学习怎样防护的。要认真看看源码,学习一下如何防护。

过D盾的一句话思路:
利用函数替换,编码绕过等。
assert函数和eval函数一样都可以用菜刀连接上,但是assert 函数限制较多,比如说就不能用echo。

这篇文章就告一段落啦,最后要感谢farmsec团队的视频,受益匪浅,感谢。

你可能感兴趣的:(DVWA File upload& 一句话木马)