WEB-CTF 条件竞争

35 篇文章 27 订阅

如何来形容这个类型的问题呢,就像是幼儿园发糖吃,每个人只能拿一块,但是如果你跟别人一起再拿一次老师也没办法分辨,毕竟一群小朋友老师也没办法分辨手和对应的人。

关于部分的Burpsuite使用的知识,在前面的https://blog.csdn.net/iamsongyu/article/details/82989478中已经讲了,就不在赘述

 

这是一个好文章,从上边摘抄和借鉴了不少

http://wiki.secbug.net/web_race-condtion.html

 

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。

这是一个小例子,很多web程序都会有上传文件的功能,头像和图像等,服务器肯定会检查文件是否满足条件,不满足的要被删除,大概的框架是:

<?php
  if(isset($_GET['src'])){
    saveimg($_GET['src']);
    //得到保存路径filename
    //检查文件
    check(filename);
    if(不符合规范)
        deldte(filename);
    else
        pass;
    //...
 }
?>

那么问题就在于,如果我们采用大量的并发请求,就传递一个生成恶意webshell的图像,访问它就可以生成webshell。在上传完成和安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求的方法访问了该文件,该文件就会被执行,并且在服务器上生成一个恶意shell的文件。至此,该文件的任务就已全部完成,至于后面发现它是一个不安全的文件并把它删除的问题都已经不重要了,因为攻击者已经成功的在服务器中植入了一个shell文件,后续的一切就都不是问题了。

 

预防方法

注意并发操作及相关操作逻辑是否得当,如上述获取远端文件时,尽量在将文件保存在本地前就进行相应的安全检查。其他建议待补充。

 

这里有两个例题,来自以下作者

作者:0verWatch 

来源:CSDN 

原文:https://blog.csdn.net/u011377996/article/details/79511160 

cumt平台上的 上传三  http://202.119.201.199/challenge/web/uploadfile/

这是一个图像上传,在服务器端使用黑名单的方式过滤,不符合的文件会被删除

使用条件竞争的方法就是,一边不断地去POST我们的恶意shellcode,另一方面就是不断地去访问服务器创建的那个文件。不断地提交文件可以使用Bp来完成,使用intruder爆破模块,负载设置为没有或者是随意找一个无用的设置一下。

另一方面,使用python不断的访问我们提交的文件,从条件竞争的方向来看,会使得我们有机会访问到我们的文件,最后得到flag

import requests
url = '你的文件路径'
while 1:
    r = requests.get(url)
    if 'moctf' in  r.text:
        print r.text

moctf上的 没时间解释 http://119.23.73.3:5006/web2/index2.php

题目首先是一个302跳转,我们可以抓包获取跳转前的信息

提示:我们需要上传一下东西.php

访问对应的网页,是一个上传的界面,名字和内容

我们就上传一句话木马,服务器给出保存路径

我们访问一下,发现提示太慢了,那么原理是一样的,他被删除了。我们可以采取跟上一题目相同的方法,也可以都使用Bp。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTFd是一个用于举办和参加CTF(Capture The Flag)安全竞赛的平台。根据引用\[1\]和引用\[2\]的内容,你可以按照以下步骤在Ubuntu上搭建CTFd平台: 1. 首先,确保你已经安装了虚拟机并配置好了Ubuntu系统。具体的安装和配置步骤可以参考相关的教程。 2. 配置阿里云镜像下载源文件。这可以加快软件包的下载速度。你可以按照引用\[1\]中的指导进行配置。 3. 进入CTFd目录。在终端中使用cd命令进入CTFd的目录。 4. 使用gunicorn工具配置CTFd。根据引用\[2\]和引用\[3\]的内容,你可以使用以下命令配置gunicorn工具: ``` gunicorn --bind 0.0.0.0:8000 -w 5 "CTFd:create_app()" ``` 5. 如果你希望在重启电脑后再次运行CTFd平台,确保以root权限运行。在Ubuntu终端中使用sudo命令运行上述命令。 这样,你就可以在Ubuntu上成功搭建CTFd平台了。请注意,这只是一个简单的搭建过程,具体的配置和使用方法可能会有所不同,你可以参考相关的文档和教程进行更详细的了解和操作。 #### 引用[.reference_title] - *1* *2* *3* [基于Ubuntu搭建CTFd平台(全网最全)](https://blog.csdn.net/qq_25953411/article/details/127489944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值