CtfShow web入门——爆破21-28

1. web21

抓包发现用户名和密码被放到了Authorization: Basic YWRtaW46YWRtaW4=请求头里面,还被base64加密

这种爆破不太懂,看了一下官方提示里面:https://www.cnblogs.com/007NBqaq/p/13220297.html

使用的Burp Suite的Intruder的Custom iterator爆破模块。

BurpSuite 的 Custom Iterator(自定义迭代器) 模式可以灵活生成认证凭证组合,尤其适用于 Basic Auth 这种 用户名:密码 格式并经过 Base64 编码 的场景。

1.1. 选中payload:

1.2. 设置payloads,设置payload type为Custom interator;在设置Position1、2、3

1.3. 再设置payload processing

1.4. 取消payload encoding

1.5. 开始爆破,查看回包长度,即可得到flag

2. web22

题目提示:域名更新后,flag.ctf.show域名失效

如果不能访问http://flag.ctfer.com/index.php,直接交flag{ctf_show_web}吧 。

3. wbe23

error_reporting(0); include('flag.php'); if(isset($_GET['token'])){ $token = md5($_GET['token']); if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){ if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){ echo $flag; } } }else{ highlight_file(__FILE__); } ?> 

3.1. 方法一:根据源码写了个脚本

import hashlib import itertools chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' for length in range(1, 4): for combo in itertools.product(chars, repeat=length):.join(combo) md5_str = hashlib.md5(token.encode('utf-8')).hexdigest() c1,c14,c17 = md5_str[1], md5_str[14], md5_str[17] if c1 != c14 or c14 != c17: continue #print(f"Token: {token}, MD5: {md5_str}") try: x1 = int(c1) x2 = int(c14) x3 = int(c17) y = int(md5_str[31]) if x1 == 0: continue if ((x1 + x2 + x3)/x1) == y : print(f"Found matching token: {token}, MD5: {md5_str}") except: continue

然后跑出来一串子

应该都行吧,试了几个都可以

3.2. 方法二:使用BP

payload type设置成Brute forcer模式

然后开始跑,很多跑出来几个就暂停了

4. web24

 <?php error_reporting(0); include("flag.php"); if(isset($_GET['r'])){ $r = $_GET['r']; mt_srand(372619038); if(intval($r)===intval(mt_rand())){ echo $flag; } }else{ highlight_file(__FILE__); echo system('cat /proc/version'); } ?> Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023

4.1. mt_srand()是什么?

mt_srand(种子值)是 PHP 的伪随机数种子初始化函数

  • mt_rand()是 PHP 生成 “伪随机数” 的函数,但它的随机序列由 “种子” 决定
  • 只要给mt_srand()传入固定的种子值,后续mt_rand()生成的随机数序列就是完全固定、可预测的(伪随机的核心特点)

4.2. 解题突破口(核心利用点)

因为mt_srand(372619038)用了固定种子,所以mt_rand()生成的第一个随机数是固定的(伪随机数的可预测性)。

我们只需要计算 “种子 372619038 对应的第一个 mt_rand () 结果”,把这个数作为r的参数传入,就能满足条件拿到flag

写个脚本运行拿到第一次生成的随机数

<?php mt_srand(372619038); // 固定种子 echo "第一次调用mt_rand():" . mt_rand() . "\n"; echo "第二次调用mt_rand():" . mt_rand() . "\n"; echo "第三次调用mt_rand():" . mt_rand() . "\n"; ?>

5. web25

 <?php error_reporting(0); include("flag.php"); if(isset($_GET['r'])){ $r = $_GET['r']; mt_srand(hexdec(substr(md5($flag), 0,8))); #1-mt_rand()=-1988627018 #mt_rand()=1988627019 $rand = intval($r)-intval(mt_rand()); #$rand = 1988627019 if((!$rand)){ if($_COOKIE['token']==(mt_rand()+mt_rand())){ echo $flag; } }else{ echo $rand; } }else{ highlight_file(__FILE__); echo system('cat /proc/version'); } Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023

先审一遍代码:$rand = intval($r)-intval(mt_rand());

传个r=0,倒推出来第一次生成的mt_rand()伪随机数:1988627019

上网搜了一下,发现有个php_mt_seed工具能倒推出来随机数的种子值(https://www.openwall.com/php_mt_seed/)用Linux系统比较好执行。

5.1.1. 下载导入Linux系统

5.1.2. tar -zxvf filename解压

5.1.3. cd进该目录

5.1.4. chmod +x php_mt_seed.c赋可执行权限

5.1.5. 输入:make

5.1.6. 输入,得到种子

查看版本可知,这里我们选php 7.1.0+的

seed = 0x0ac64537 = 180766007 (PHP 7.1.0+)

seed = 0x2a0d8bda = 705530842 (PHP 7.1.0+)

seed = 0x2bc4c8c5 = 734316741 (PHP 7.1.0+)

seed = 0x967716e2 = 2524387042 (PHP 7.1.0+)

seed = 0xe37f57b9 = 3816773561 (PHP 5.2.1 to 7.0.x; HHVM)

seed = 0xe37f57b9 = 3816773561 (PHP 7.1.0+)

测试一下

但是不知道是哪个,用这个脚本试试吧,我是测试到了第三个才行的

<?php $seed =[180766007,705530842,734316741,2524387042,3816773561,3816773561]; for ($i = 0; $i < 5; $i++) { mt_srand($seed[$i]); mt_rand(); $token[$i] =intval(mt_rand())+intval(mt_rand()); echo "Token:".$token[$i]."\n"; } ?>

6. web26

function check(){ // 1. 定义名为check的函数,调用它就会执行里面的AJAX请求 $.ajax({ // 2. jQuery的AJAX方法,发起异步HTTP请求(不用刷新页面) url:'checkdb.php', // 3. 请求的后端接口地址:checkdb.php type: 'POST', // 4. 请求方式:POST(参数在请求体里,比GET安全) dataType:'json', // 5. 关键:告诉jQuery,期望后端返回【JSON格式】的响应 data:{ // 6. 要发送给后端的参数(键值对格式,不是JSON!) 'a':$('#a').val(), // 取页面上id="a"的输入框的内容,键名a 'p':$('#p').val(), // 取id="p"输入框的内容,键名p 'd':$('#d').val(), // 取id="d"输入框的内容,键名d 'u':$('#u').val(), // 取id="u"输入框的内容,键名u 'pass':$('#pass').val() // 取id="pass"输入框的内容,键名pass }, success:function(data){ // 7. 请求成功时执行的函数 alert(data['msg']); // 弹出后端返回的JSON里的msg字段内容 }, error:function(data){ // 8. 请求失败时执行的函数 alert(data['msg']); // 尝试弹出msg(失败时data结构不同,这里其实不太对) } }); }

直接抓包: 后端返回的内容是JSON 格式!!!不需要前端传JSON格式

7. web27

function check(){ $.ajax({ url:'checkdb.php', type: 'POST', dataType:'json', data:{ 'a':$('#a').val(), 'p':$('#p').val() }, success:function(data){ alert(data['msg']); }, error:function(data){ alert(data['msg']); } }); } 

下载附件后,从第一个开始爆破身份证号

得到该学生的信息,进行登录后,得到flag

高先伊 621022199002015237 02015237

8. web28

扫了一波没啥思路,看了大佬的wp说是爆破目录

要是爆破跑一半,不行了可以试试把redirections选成always

Read more

Stable-Diffusion-v1-5-archive效果展示:高清风格化图像生成作品集(附Prompt)

Stable-Diffusion-v1-5-archive效果展示:高清风格化图像生成作品集(附Prompt) 1. 引言:经典模型的魅力再现 如果你对AI绘画感兴趣,那么“Stable Diffusion”这个名字你一定不陌生。而今天我们要聊的,是它的一个经典版本——Stable Diffusion v1.5 Archive。这个模型就像是AI绘画世界里的“老将”,虽然现在有更新、更强大的模型出现,但它在风格化图像生成上的稳定性和独特的“味道”,依然让很多创作者爱不释手。 简单来说,Stable Diffusion v1.5 Archive是一个专门用来“文生图”的工具。你输入一段文字描述,它就能为你生成一张对应的图片。它的特点在于,对于很多艺术风格——比如油画感、动漫风、赛博朋克——有着非常出色的理解和表现力,生成的作品往往带有一种独特的质感和氛围。 这篇文章,我们不谈复杂的安装和配置,也不讲深奥的原理。我们就来一起看看,这个经典的模型到底能生成出怎样惊艳的图片。我会分享一系列不同风格、不同主题的生成作品,并且把生成每张图所用的“

DeepSeek-R1-Distill-Llama-8B效果实测:CodeForces评分1205模型生成AC代码对比

DeepSeek-R1-Distill-Llama-8B效果实测:CodeForces评分1205模型生成AC代码对比 1. 这个模型到底能写对几道编程题? 你有没有试过让AI帮你解算法题?不是那种“大概意思对就行”的伪代码,而是真正在CodeForces上能提交、能通过所有测试用例的AC代码?这次我们把目光投向一个刚开源不久、但已经在多个推理榜单上崭露头角的轻量级选手——DeepSeek-R1-Distill-Llama-8B。 它不是参数动辄几十B的大块头,而是一个仅80亿参数的蒸馏模型,却在CodeForces评测中拿到了1205分。这个分数意味着什么?它比GPT-4o(759分)高出近60%,比Claude-3.5-Sonnet(717分)翻了快一倍,甚至超过了QwQ-32B(1316分)的九成水平。更关键的是,它跑得快、占内存少、部署简单——用Ollama一条命令就能拉起来,本地笔记本也能稳稳扛住。 这篇文章不讲大道理,不堆参数,就做一件事:真实还原它解题的过程。我们选了5道CodeForces典型题(涵盖模拟、贪心、二分、图论和动态规划),从读题、思考、写代码,到

老码农和你一起学AI系列:LLaMA衍生模型

老码农和你一起学AI系列:LLaMA衍生模型

LLaMA衍生模型指的是基于Meta发布的LLaMA基础模型,通过微调、优化或扩展而产生的各类变体模型。就像LLaMA是一个强大的“通用大脑”,而衍生模型则是针对不同语言、不同任务、不同应用场景进行“专业培训”后的“专家”。根据衍生方式的不同,可以分为两大类:LLaMA衍生模型、官方演进版本 一、官方演进版本 LLaMA系列本身就在持续演进,每一代都是前一代的“官方衍生版”: 版本核心升级技术亮点LLaMA 1开源奠基13B参数超越GPT-3,验证“小模型+大数据”路线LLaMA 2可商用、GQA上下文翻倍至4K,引入分组查询注意力,70B版本逼近GPT-3.5LLaMA 315T数据、128K上下文405B旗舰版性能比肩GPT-4,代码占比提升至25%LLaMA 4MoE稀疏架构、多模态17B激活参数达400B总参数效果,原生支持图像/视频理解,1000万上下文窗口 二、社区微调衍生模型 Alpaca(斯坦福):LLaMA衍生模型的“鼻祖”。斯坦福团队用52K条指令数据对7B LLaMA进行微调,仅花费不到600美元就训练出媲美GPT-3.5的对话模型。

GME-Qwen2-VL-2B-Instruct部署详解:Kubernetes集群中图文匹配服务编排

GME-Qwen2-VL-2B-Instruct部署详解:Kubernetes集群中图文匹配服务编排 1. 项目概述与核心价值 GME-Qwen2-VL-2B-Instruct是一个专门针对图文匹配场景优化的多模态模型工具,它解决了原生模型在图文匹配打分准确性方面的问题。通过在Kubernetes集群中部署这个服务,你可以获得一个高性能、可扩展的图文匹配解决方案。 这个工具的核心价值在于: * 精准匹配:修复了官方指令缺失导致的打分不准问题,确保匹配结果更加可靠 * 高效计算:采用向量点积计算相似度,支持FP16精度优化,大幅提升推理速度 * 隐私安全:纯本地运行,无需网络依赖,确保数据不会离开你的集群 * 灵活部署:通过Kubernetes编排,可以轻松实现水平扩展和资源管理 无论是电商平台的商品图文匹配、内容审核系统的视觉文本对齐,还是多媒体检索场景,这个服务都能提供稳定可靠的支持。 2. 环境准备与依赖配置 2.1 系统要求 在开始部署之前,请确保你的Kubernetes集群满足以下要求: * Kubernetes版本:1.20+ * GPU节点