ctfshow-web入门-爆破(web21-web28)

web21

打开后要求登录

image-20250318200511274

附件是一个密码字典

image-20250318200603151

使用bp抓包,将抓到的东西进行base64解码

image-20250318201014460

发现是admin:密码的键值对

image-20250318201114005

添加payload,padload类型为自定义迭代器,位置1为admin:

image-20250318202009705

位置2为导入的字典

image-20250318202044361

添加base64编码和取消url编码

image-20250318202134709

然后开始攻击,发现长度和其他不同的包,查看响应,发现flag

image-20250318201823174

web22

这道题现在好像不能做了?

image-20250318202333508

web23

<?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 11:43:51
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 11:56:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com*/
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__);}
?>
  • md5算出的值是32位的16进制数
  • substr($token, 1, 1)是将token的字符串的第二个字符开始,取一个字符
php > $token = 'abcdefg';
php > echo substr($token,1,1);
b
  • 第一个判断条件是要求md5字符串第2个字符,第15个字符,第18个字符相等

  • 第二个判断条件是第2个字符,第15个字符,第18个字符转换为整数后相加的和与第2个字符的整数相除的结果(3)与最后一个字符的整数相等

综合两个条件:第2个字符,第15个字符,第18个字符相等,最后一个字符为3

使用如下脚本爆破:

import hashlibfor num in range(1,10000):md5_value = hashlib.md5(str(num).encode('utf-8')).hexdigest()if md5_value[-1] == '3':if md5_value[1:2] == md5_value[14:15] and md5_value[1:2] == md5_value[17:18]:print(num)

得到如下结果:

$ python 1.py
422
1202

尝试传入url?token=422,得到flag

image-20250318213529540

web24

 <?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:26:39
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 13:53:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com*/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
  • mt_srand(372619038);

    • 这行代码使用 mt_srand 函数设置Mersenne Twister随机数生成器的种子为 372619038。设置种子后,每次调用 mt_rand 都会生成相同的随机数序列。
  • intval(mt_rand())

    • 将生成的随机数转换为整数。

使用本地php生成随机数

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

传入url?r=1155388967,得到flag

image-20250318214240228

web25

 <?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:56:57
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 15:47:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com*/error_reporting(0);
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');
}
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

先传入r=0,得到

image-20250319082338718

要满足条件if((!$rand)),则$rand=0;

则r=1141567437,为第一次生成的随机数

下载工具:https://www.openwall.com/php_mt_seed/

解压后使用Linux终端执行命令make,得到elf可执行文件

image-20250318222831894

Usage: ./php_mt_seed VALUE_OR_MATCH_MIN [MATCH_MAX [RANGE_MIN RANGE_MAX]] ...
$ ./php_mt_seed 1141567437
Pattern: EXACT
Version: 3.0.7 to 5.2.0
Found 0, trying 0x50000000 - 0x53ffffff, speed 13421.8 Mseeds/s
seed = 0x51f33dba = 1374895546 (PHP 3.0.7 to 5.2.0)
seed = 0x51f33dbb = 1374895547 (PHP 3.0.7 to 5.2.0)
Found 2, trying 0xfc000000 - 0xffffffff, speed 12434.9 Mseeds/s
Version: 5.2.1+
Found 2, trying 0x16000000 - 0x17ffffff, speed 269.4 Mseeds/s
seed = 0x16415710 = 373380880 (PHP 7.1.0+)
Found 3, trying 0x58000000 - 0x59ffffff, speed 261.3 Mseeds/s
seed = 0x59135498 = 1494439064 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x59135498 = 1494439064 (PHP 7.1.0+)
Found 5, trying 0x66000000 - 0x67ffffff, speed 262.1 Mseeds/s
seed = 0x662adf41 = 1714085697 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x662adf41 = 1714085697 (PHP 7.1.0+)
Found 7, trying 0xc6000000 - 0xc7ffffff, speed 259.5 Mseeds/s
seed = 0xc7b65f2e = 3350617902 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0xc7b65f2e = 3350617902 (PHP 7.1.0+)
Found 9, trying 0xfe000000 - 0xffffffff, speed 258.4 Mseeds/s
Found 9

尝试这几个值,发现373380880、1494439064、1714085697、3350617902都可以得到第一个相同的随机数,但是后两个随机数不同

php > mt_srand(3350617902);
php > echo mt_rand();
1141567437

依次尝试传入,只有最后一个可以

php > mt_srand(3350617902);
php > echo mt_rand();
1141567437
php > echo mt_rand()+mt_rand();
3544738301

Cookie传入,得到flag

image-20250319082802039

web26

image-20250319083043374

点击同意协议,开始安装

image-20250319084030119

点击确认无误,开始安装,使用bp抓包,(只有用Chrome才能抓到包,Firefox不行)

填写以下值,爆破数据库密码

image-20250319084210558

image-20250319083956359

得到flag

image-20250319084136362

web27

点击下载录取名单

image-20250319084518918

image-20250319084617593

发现需要姓名和身份证号

image-20250319084641911

录取名单里有姓名和部分身份证号

image-20250319084740846

缺失的部分正好是出生日期,于是使用bp爆破(同样只能用Chrome抓包)

image-20250319085218984

选择爆破日期,格式为:yyyyMMdd

image-20250319085637022

点击开始攻击,得到身份证号为621022199002015237

image-20250319091840405

查看响应

image-20250319091930796

解码后得到学号和初始密码

image-20250319091813930

登录后得到flag

image-20250319092143019

web28

发现路径为url/0/1/2.txt

image-20250319092443271

于是爆破目录url/0-100/0-100/ # 仅爆破目录,删除2.txt

在Linux执行命令$ seq 0 100 > 1.txt,生成字典

选择集群炸弹攻击,在两个位置都添加相同的字典

image-20250319162127803

开始攻击,发现flag在目录/72/20/

image-20250319162335890

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907891.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

灰度发布学习大纲:从理论到实践,掌握关键技术和流程

一、灰度发布概述 1. 定义与别名灰度发布:一种渐进式的软件发布策略,也被称为金丝雀发布(Canary Release)。 目的:通过逐步向用户群体推送更新,降低新版本引入的潜在风险,提升用户体验,实现不停机的热迁移。2. 灰度发布的优势降低风险:逐步验证新版本的稳定性。 快速反…

代码随心录第三天|Leecode 203.移除链表元素 707.设计链表 206.反转链表

1、Leecode 203.移除链表元素 题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/ 题目描述:解题思路:移除操作就是让节点next指针直接指向下下一个节点,因为单链表的特殊性,只能指向下一个节点,所以头节点需要单独考虑,这种方法是直接使…

【THM】Linux Privilege Escalation

Linux Privilege Escalation/Linux 权限提升 什么是权限提升 “权限提升”是什么意思? 权限提升通常涉及从较低权限的帐户到较高权限的帐户。 从技术上讲,它是利用操作系统或应用程序中的漏洞、设计缺陷或配置疏忽来获得对通常限制用户访问的资源的未经授权的访问。 权限提升…

kettle从入门到精通 第九十三课 ETL之kettle kettle 调用web service接口5种方法,一文彻底搞懂

场景:群里有小伙伴向我求助如何调用web service接口,趁着周末时间,给兄弟们搞demo。 1、本次使用的web service服务接口地址是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getSupportCityDataset, 此接口根据用户输入的城市名称可获取城市下属单位,如下图所示…

分享一款替代 GitLab 的开源软件 gogs ,适合中小企业,非常优秀!

这篇文章,分享一款替代 GitLab 的开源软件 gogs ,Github 上有 4 万多颗 star ,笔者认为它非常优秀 ,适合中小企业。1 Gogs 简介 Gogs 是一款极易搭建的自助 Git 服务,它使用 Go 语言开发,只要 Go 语言支持的平台它都支持,包括 Linux 、Mac OS X、Windows 以及 ARM 平台。…

【闲话 No.3】 并查集相关

并查集的复杂度证明及可持久化。命に嫌われている。 小唐话 感觉有的时候已经无法与人正常交流,净做唐事、说些唐话了。或许是我无法准确猜到别人喜欢什么吧。 不过还是自己心底一点 joker 之心/私心作祟吧。 感觉我有时做的唐事真的挺对不起大家的。 可我又怎么战胜心底的那…

3.29 学习记录

实现了科技页面的树状图查询和分页查询

Django - admin djangoql

效果: 1. pip installpip install djangoql 2. settings.pyINSTALLED_APPS = [djangoql, ] 3. admin.pyfrom django.contrib import admin from djangoql.admin import DjangoQLSearchMixinfrom .models import *@admin.register(User) class UserAdmin(DjangoQLSearchMixi…

[rCore学习笔记 025 extend] 带优先级的抢占式调度

引言 因为rcore并非设计为一个rtos,而是在我们需要的时候我们需要在设计的时候考虑到线程切换的时候的延时问题. 回顾上一部分的使用环形队列进行调度的方式,我们会发现我们寻找下一个Ready的任务的时间是不均匀的.并且我们的任务是没有优先级的,可以认为是平权的,因此,为了:快…

第五周第三章3.6-3.8,思考与练习3.19-3.21

3.6 import time a = "strating" print("{:^}".format(a),end=) for i in range(11): s = . * i print("{:<}".format(s),end=) time.sleep(1) print("Done!") 思考与练习3.19 import time current_time = time.time() time_tuple …

【Java - demo】Redis开发入门

Redis 是一个高性能的键值存储数据库,常用于缓存、消息队列等场景。 本文将以简单易懂的方式介绍 Redis 的基本概念和使用方法,并附上 Java 示例代码,帮助你快速上手。 一、Redis 是什么? Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统。它支持多…