• wzsc_文件上传(条件竞争)


    打开题目链接,很常见的文件上传框

    经过尝试,发现上传东西后会调用upload.php,猜测文件被传到upload目录下

    随便传了几个类型的文件,访问upload目录

    发现.php文件以及.htaccess、.user.ini这种配置文件都没有传上去

    但是通过抓包我们可以发现,其实php文件以及配置文件都是上传成功了的(响应200)

    说明文件上传成功,但是服务器在短时间内就立刻将其删掉了

    这种情况只能采取条件竞争

    条件竞争原理:当我们成功上传了php文件,服务端会在短时间内将其删除,我们需要抢在它删除之前访问文件并生成一句话木马文件,所以访问包的线程需要大于上传包的线程。

    这里我们先写一个用于上传的php文件(我这里命名为m.php),内容如下:

     fputs(fopen("shell.php", "w"), ''); ?>

    我们可以使用多线程并发的访问上传的文件,总会有一次在上传文件到删除文件这个时间段内访问到上传的php文件(m.php),一旦我们成功访问到了上传的文件(m.php),那么它就会向服务器写一个shell(shell.php)。

    换句话说,我们最终利用的并不是我们上传的文件,上传只是为了能有一刻成功访问,一旦访问成功,便会写入一句话木马,我们最终利用的就是新写入的php文件。

    上传m.php,利用burpsuite抓包(这个是上传包)

    设置上传包的线程数(这里设置为30)

    设置攻击载荷,选择没有负载,并且勾上无限期地重复

    这里注意一个小细节:

    如果没有清除有效负载的位置

    开始攻击后的请求包中filename为空

    清除之后,再开始攻击

    filename=m.php(即我们上传的文件)

    接下来我们抓访问包:

    我们直接尝试访问m.php,使用burpsuite进行抓包

    (下面的有些图有问题,我们这里应该访问的是上传的文件,即m.php,成功访问到,才会写入shell.php)

    同理设置线程数(这里设置为80)

    注意:访问包的线程数一定要大于上传包的线程数

    设置攻击载荷,选择没有负载,并且勾上无限期地重复

    设置好之后开始攻击

    最开始可能访问包都是404或者500

    但是过一会儿你再次筛选状态码,你就会看到200的响应

    这说明条件竞争成功,已经成功向服务器写入了shell.php

    我们访问upload目录查看,确实已经存在shell.php

    接下来使用蚁剑连接即可

    在html目录下找到flag.php

    cyberpeace{b2ccdb64cfd4c8f30450d306dab8da1c}

  • 相关阅读:
    [附源码]java毕业设计基于协同过滤推荐的电影推荐系统
    电子电器架构 —— 车载网关边缘节点路由转发策略
    传输层—TCP原理详解
    ASO优化之我们该如何本地化应用
    Nvm任意切换node版本号
    【计算机毕业设计】45.医院挂号系统
    如何选择和使用腾讯云服务器的方法新手教程
    《PyTorch深度学习实践》第三讲 梯度下降算法
    amber14自由能计算及增强采样方法
    NoSQL之 Redis配置与优化
  • 原文地址:https://blog.csdn.net/Myon5/article/details/133562672