当前位置: 首页 > news >正文

ctfshow-web(21-28)爆破

ctfshow-爆破

web21

有前缀加base64

image-20251126150913097

image-20251126151024799

我们进行抓包

发现base64加密

image-20251126151346235

发送到爆破模块

image-20251126152646315

配置参数

Payload processing中添加两个规则,一个是Add prefix添加前缀为【admin:】因为账号猜测为admin固定不动,冒号为固定格式,再添加另外一个规则为Encode -> Base64-encode,把原先的url取消了

image-20251126152804887

得到返回值为200的

image-20251126152841605

ctfshow{dbbb5d6a-f6b0-43e9-ad16-603ba5b4b052}

web22

域名爆破

image-20251126225020457

360quake 使用空间搜索引擎--->360quake 搜索语法--->domain="ctf.show" 可以搜索出子域名--->vip.ctf.show 可以发现子域名vip.ctf.show下面有flag--->flag{ctf_show_web}

flag{ctf_show_web}

web23

hash判断

image-20251126225250420

image-20251126225401792

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__);}
?>
代码逻辑分解
输入参数:通过GET方式传入一个名为token的参数。
MD5哈希:将传入的token进行MD5哈希,得到一个32位的十六进制字符串(因为MD5哈希通常以32位十六进制表示)。
第一个条件检查:
检查MD5哈希后的字符串的第2个字符(substr($token, 1,1),因为索引从0开始)、第15个字符(substr($token, 14,1))和第18个字符(substr($token, 17,1))是否相同。
第二个条件检查:
将这三个相同的字符转换为整数(intval),然后计算它们的和除以第一个字符的值,结果应等于第32个字符(substr($token, 31,1))的整数值。
输出flag:如果以上两个条件都满足,则输出flag。
解决思路
我们需要找到一个字符串,其MD5哈希满足上述两个条件。具体步骤如下:
确定相同字符的位置:首先,我们需要MD5哈希的第2、15、18个字符相同。设这个相同的字符为c。
数学关系:根据第二个条件,(3 * intval(c)) / intval(c) === intval(substr($token, 31,1))。简化后得到3 === intval(substr($token, 31,1)),即第32个字符的整数值必须为3。
字符选择:因此,我们需要:
第2、15、18个字符相同,可以是任意十六进制字符(0-9, a-f)。
第32个字符必须是3(因为intval('3') === 3)

写一个脚本

import hashlib
import string
import randomdef generate_token(length=10):"""生成随机字符串"""letters = string.ascii_letters + string.digitsreturn ''.join(random.choice(letters) for _ in range(length))def check_token(token):"""检查token是否满足条件"""md5_hash = hashlib.md5(token.encode()).hexdigest()c1 = md5_hash[1]   # 第2个字符c2 = md5_hash[14]  # 第15个字符c3 = md5_hash[17]  # 第18个字符c4 = md5_hash[31]  # 第32个字符if c1 == c2 == c3 and c4 == '3':# 检查数学条件sum_val = 3 * int(c1, 16)divisor = int(c1, 16)result = sum_val / divisorif result == int(c4, 16):return True, md5_hashreturn False, md5_hash# 暴力破解
found = False
while not found:token = generate_token()found, md5_hash = check_token(token)if found:print(f"Found token: {token}")print(f"MD5 hash: {md5_hash}")break

image-20251126225916413

ctfshow{96953393-b243-42ff-bb74-4d1a1706219f}

web24

image-20251126230216099

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');
}
  • 程序先用 mt_srand(372619038) 设置了随机数种子。
  • 然后你用 GET 参数 r 提交一个值,必须等于 mt_rand() 的第一次输出。
  • 由于种子固定,mt_rand() 的输出是确定的

我们只要逆向一下

<?php
mt_srand(372619038);
echo mt_rand();
?>1155388967

image-20251126230656098

image-20251126230703284

ctfshow{fe082771-237f-473d-9e4d-4d2da3ad0de6}

web25

image-20251126231758220

打开的得到

include("flag.php");
if(isset($_GET['r'])){$r = $_GET['r'];mt_srand(hexdec(substr(md5($flag), 0,8)));$rand = intval($r)-intval(mt_rand());if((!$rand)){if($_COOKIE['token']==(mt_rand()+mt_rand())){echo $flag;}}else{echo $rand;}
}else{highlight_file(__FILE__);echo system('cat /proc/version');
}分析上述代码,可知需要进入到打印flag的分支,需要满足$rand0=0,即$r等于第1次的mt_rand()值,同时需要满足token值等于第2次mt_rand()值与第3次mt_rand()值的和,由于mr_srand()的seed值不变,可由第一次的mt_rand()值反推mr_srand()的seed值。

这个

url/?r=0,就可以获得-mt_rand()的值,即拿到了mt_rand()第一次生成的随机数=1857153848

有了第一次生成的随机数的值,再加上之前播种的种子是固定不变的, 就可以通过php_mt_seed工具爆破出之前播种的随机数种子的值

可以下载一个

1、输入?r=0得到-1481831950, 则第1次随机值=1481831950

2、下载工具并编译https://www.openwall.com/php_mt_seed/php_mt_seed-4.0.tar.gz

tar -xzf php_mt_seed-4.0.tar.gz 编译make
┌──(root㉿kali)-[~/桌面/php_mt_seed-4.0]
└─# ./php_mt_seed 1857153848
Pattern: EXACT
Version: 3.0.7 to 5.2.0
Found 0, trying 0xfc000000 - 0xffffffff, speed 3252.2 Mseeds/s 
Version: 5.2.1+
Found 0, trying 0x3e000000 - 0x3fffffff, speed 32.4 Mseeds/s 
seed = 0x3f9b2e30 = 1067134512 (PHP 7.1.0+)
Found 1, trying 0x88000000 - 0x89ffffff, speed 31.9 Mseeds/s 
seed = 0x890d7c51 = 2299362385 (PHP 7.1.0+)
Found 2, trying 0xbe000000 - 0xbfffffff, speed 32.3 Mseeds/s 
seed = 0xbf46a081 = 3209076865 (PHP 7.1.0+)
Found 3, trying 0xfe000000 - 0xffffffff, speed 32.7 Mseeds/s 
/?r=1857153848token=1858498537
<?php
$seed = 3209076865;   // 先跑第一个,再换 2299362385、3209076865
mt_srand($seed);$r      = mt_rand();          // 第 1 个随机数
$rand2  = mt_rand();          // 第 2 个
$rand3  = mt_rand();          // 第 3 个
$token  = $rand2 + $rand3;echo "seed=$seed\n";
echo "r=$r\n";
echo "token=$token\n";
?>

image-20251128163903587

ctfshow{7e02a8bf-64bd-48b2-9d0f-b7a06847d284}

web26

爆破数据库密码

image-20251128164532894

抓包,什么都不用填,然后就能看到回显有Flag了

image-20251128164722787

我感觉也可以爆破,得到密码

7758521

image-20251128165053218

image-20251128164658890

ctfshow{cf8c30d0-2b1a-4ad3-bbe8-bd29f2406e22}

web27

身份证爆破

image-20251128165353973

image-20251128165341836

打开靶机,发现是个登录页面,需要学号和密码登录,猜测登录后可获得flag,则可围绕获得学号密码来进行,因为两者都不知道,直接爆破不太合适,看看还能提取到什么信息。
当点击到登录按钮下方的录取名单时,自动下载了一个list.xlsx,打开这个文件,发现了几个人的姓名和身份证号部分信息。点击录取名单下面的学生学籍信息查询系统,发现可以根据学生姓名和身份证号进行录取查询,那么第一步要做的可能就是要爆破身份证号了,或许在这里可以查到有用的信息。

image-20251128165608004

image-20251128170133380

image-20251128170140344

然后爆破

image-20251128170738166

高先伊 身份证号:621022199002015237

image-20251128170816008

image-20251128170841181

ctfshow{79af2b56-8fdf-4bc4-b981-4769bbbd4de9}

web28

目录爆破

image-20251128171004655

首先要明白302状态码的含义 就是重定向 当你更改url时,会不断的在前面加0/1/ 一直重定向 页面崩溃 爆破的话 就爆破目录

还是爆破题 ,用burpsuite爆破打开题目链接后,直接跳转到了 原url/0/1/2.txt用burpsuite抓包后,发现 原url 是进行了302跳转 才进入了 原url/0/1/2.txt如果直接输 原url/1/2 之类,会进行302跳转,然后跳转就会进入死循环,最后直接打不开根据题意 ,是要进行一定的爆破的,那么,什么是爆破点呢,只能是 原url后面这两个目录 了,于是将其置入intruderGET /§0§/§1§/ HTTP/1.1直接是在get 参数 上做上。攻击类型 cluster bombpayload sets 1 。 payload type:numbers from 1 to 99 step 1payload sets 1 。 payload type:numbers from 1 to 99 step 1start attack!开始攻击执行一段时间后,发现有一个httpd状态码是200 其他都403打开这个的response 发现flag

image-20251128171547352

image-20251128172638767

image-20251128172652963

image-20251128172702472

成功发现

image-20251128172727113

ctfshow{a7bee088-1486-4945-8398-0d58625361ef}
http://www.jsqmd.com/news/54262/

相关文章:

  • AI Agent驱动的招聘革命:深度解析易路AI招聘的战略价值与硬核能力
  • AI实现类人推理的技术探索
  • 2025年国内技术好的智能货架公司推荐榜单,冷库货架/重型货架/货架/货架定制/模具架/模具架/精益管料架/阁楼货架智能货架源头厂家推荐榜单
  • 自动化测试框架Selenium的基本知识和简单实战
  • CSS基础--面向后端需要了解的前端知识
  • 2025年下半年江苏煤矿智能化/智能煤流系统开发公司综合推荐指南
  • 字符编码和文件操作
  • 2025 全球温度循环试验箱厂家推荐!细分场景定制方案与成本分析
  • 别用“设计感”掩盖无知:从一次 null == 0 的事故说起
  • 2025年下半年江苏智能煤流系统、煤矿智能化系统开发公司综合推荐指南
  • 使用Postman进行接口测试、接口自动化和集成CI/CD
  • 信创环境下的一体化全栈智能运维
  • AI训练素材与数据集供应商推荐:卓特视觉的专业解决方案
  • 2025年国内靠谱的AGV货架生产厂家推荐榜单,立体货架/重载货架/中型货架/组合式货架/流利式货架/背网货架AGV货架批发厂家推荐榜单
  • 28223E2125263E2121203E212424384722B0开
  • 【251128】CF2164 Div.1+2 vp 总结
  • 2025长沙公务员面试培训机构排名,速看!,湖南长沙公务员面试技术引领与行业解决方案解析
  • 2025年四川成都奖杯奖牌定制、奖章证书定制、奖杯定制、水晶奖杯定制、奖牌定制品牌厂家企业推荐top5指南
  • 2025年工业冷风机车间降温技术全解析,铁皮棚车间降温/焊装车间通风降温/压铸车间通风降温/机械厂车间降温工业冷风机厂商推荐排行
  • 2025年长沙公务员面试机构排行榜:前五强揭晓,湖南长沙公务员面试排行优质品牌选购指南
  • 车间降温新方案:工业冷风机2025年趋势,五金车间通风降温/焊装车间通风降温/钢构车间通风降温/制造业车间通风降温工业冷风机企业口碑推荐
  • 详细介绍:【k8s】Deployment、StatefulSet、DaemonSet
  • 2025非遗新中式品牌排行TOP榜,这些品牌正走红,非遗新中式推荐排行色麦新中式层层把关品质优
  • 2025年高定服装加盟品牌市场占有率排行,高定服装加盟采购色麦新中式市场认可度高
  • 2025国风源头排行榜发布,这些品牌上榜!,国风源头推荐排行技术领航者深度解析
  • 2025年工业冷风机维护保养全攻略,延长设备使用寿命,铁皮房车间降温/高大车间厂房通风降温/炼钢车间通风降温工业冷风机公司口碑推荐
  • 2025年新中式高定服装加盟五大推荐品牌,新中式高定服装加盟批发精选优质厂家
  • 2025年靠谱的四川变形缝_变形缝厂家实力及口碑推荐榜
  • 2025年国内正规的AGV货架批发厂家找哪家,悬臂货架/高位货架/精益管料架/贯通货架/牛脚式货架/可调节货架/冷库货架AGV货架产品选哪家
  • HTML基础--面向后端