【Ctfshow_Web】信息收集和爆破

news2024/9/22 17:29:26

0x00 信息收集

web1

直接查看源码

web2

查看不了源码,抓包即可看到(JS拦截了F12)

web3

抓包,发送repeater,在响应包中有Flag字段

web4

题目提示后台地址在robots,访问/robots.txt看到Disallow: /flagishere.txt访问即可

web5

phps源码泄露,尝试访问/index.phps(或者扫描)

phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替

web6

工具扫描或者访问/www.zip,此题需要多熟悉各种源码下的目录结构

web7

hint:版本控制很重要,但不要部署到生产环境更重要。

这题需要了解git或者svn等版本控制软件的使用。访问/.git即可

.git是git这个软件在本地初始化的一个隐藏文件,代码修改后第一次提交是提交到.git文件夹内,再push才是提交到远程管理仓库等,如果配置不当,直接将 .git文件加载到线上环境,这样便引起了.git文件泄露

web8

同样也是考察版本控制,访问/.svn即可

当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN泄露漏洞

web9

hit:发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了

考察的是使用vim编辑时,突然中断退出,会生成一个文件.swp,访问/index.php.swp直接用sublime打开得到flag。

这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。需要注意的是如果你并没有对文件进行修改,而只是读取文件,是不会产生swp文件的。

web10

cookie 只是一块饼干,不能存放任何隐私数据

F12--存储--cookie的flag字段中

web11

域名其实也可以隐藏信息,比如flag.ctfshow.com 就隐藏了一条信息

web12

有时候网站上的公开信息,就是管理员常用密码

robots.txt发现disallow:/admin/

访问xxxxxx/admin/出来弹框,输入用户名admin,密码在网页最下方

robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。

web13

技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码

发现网页底部的document是可以点击的,点击发现是一个文档(系统使用手册)内含敏感信息。

web14

有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人
小0day:某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录

根据提示,源代码中搜索editor,可以发现

这一题考察的是源码中的敏感信息——目录

img标记中的src属性会暴露出图片的目录,如果图片没有单独存放在同一个文件夹中,则可能会暴露出敏感的目录名

这一题比较考验眼力,/upload一般是文件上传的文件夹,且别的图片都不在该目录下!

访问xxxx/editor/upload——》403Forbidden

访问xxxx/editor:

这里应该考察的就是编辑器的一些漏洞了,查找编辑器版本:kindeditor4.1.11,查找相关漏洞

kindeditor上传漏洞复现(CVE-2017-1002024)

我感觉这才web14,不会出这么复杂吧,查看wp,好像没那么复杂,不过也和文件上传相关

回形针一样的图标那里存在BUG,竟然可以查看根目录,访问/var/www/也就是网站根目录

/var/www/html/nothinghere不是此地无银三百两嘛(fla000g.txt)

访问/nothinghere/fl000g.txt得到flag

web15

公开的信息比如邮箱,可能造成信息泄露,产生严重后果

 访问xxx/admin竟然出现后台登录页面

 

在哪个城市:西安(邮箱暴露了QQ),可疑修改密码得到flag

web16

对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露

PHP探针:

php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。

默认的雅黑探针:访问/tz.php

点击查看PHP信息 发现FLAG字段中存在flag

web17

备份的sql文件会泄露敏感信息

一开始访问sql.bak没反应,查看WP发现是backup.sql

web18

不要着急,休息,休息一会儿,玩101分给你flag

 太难玩了,直接查看源代码,发现js文件(一般这种玩游戏的题目都会和js有关)

肯定和这行代码有关:

直接复制到控制台

访问/110.php得到flag

 web19

密钥什么的,就不要放在前端了

 说明密钥就在前端,查看源代码,可疑:

pazzword尝试了base64和DES都没解出来,直接抓包更改密码:

 web20

mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。

 这一题主要是体验一下以前的文件泄露方法,现在很少见到asp+access架构了

直接访问/db/db.mdb,使用notepad++打开即可


总结

1、在源码中可以搜集,若不能F12可以通过抓包,再抓包的时候flag可能藏在响应包的Flag字段;

2、后台地址可以通过访问/robots.txt得知浏览器第一个爬的页面可以知道哪些文件不被允许查看,还可以访问/admin可能就到了后台的登录页面;

3、phps源码泄露可以访问index.phps查找有用信息,此外要熟悉各种源码的目录结构;

4、考察git和svn版本控制,可能存在泄露;(访问/.svn或者/.git)

5、cookie中可能存在重要信息;

6、有时候网站上公开信息要注意,比如QQ/邮箱/技术文档/源码中一些路径信息都要注意;

7、PHP探针会造成信息泄露,一般默认路径是/tz.php;

8、备份的SQL文件/源码中的JS都要注意。


0x01 爆破

web21

题目自带爆破字典dic.zip

弹出登录框,输入admin/123456后抓包发送到repeater:

使用burp自带解密(base64):

可以authorization包含了“用户名:密码”,使用BP载入字典

添加前缀“admin:”(熟练使用burpsuite)

加编码:base64

去掉√:因为有“=”,base64自带等号,不能让=编码

设置完成后开始爆破,爆破的时候可以不断点击status排序,如果不是401可能就是我们想要的结果了。

 

or:

web22

考察子域名查询:

域名更新后,flag.ctf.show域名失效,内容是flag{ctf_show_web}

web23

还爆破?这么多代码,告辞!
<?
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;
    //substr(字符串,开始位置,个数) 
    //intval()函数可以获取变量的整数值,常被用来进行数据类型转换,将字符串类型的变量转换为为整数类型
        }
    }
}else{
    highlight_file(__FILE__);

}
?> 

 根据所给代码写脚本:

<?php 
$i=0;
for($i;$i<10000;$i++){
	$token = md5($i);
    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
    	//echo 'token= '.$i.' md5= '.$token;
    	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 'token= '.$i.' md5= '.$token;
    	}
    }

}
?>
//满足条件的:
token= 422 md5= f85454e8279be180185cac7d243c5eb3
token= 1202 md5= 147702db07145348245dc5a2f2fe5683

 

 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;
    }
    //生成一个随机数种子判断r和随机数种子是否一致
    //随机数种子设置:只要种子是相同的,那么生成的值就是一样的
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

?> Linux version 5.4.0-135-generic (buildd@lcy02-amd64-066) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022 Linux version 5.4.0-135-generic (buildd@lcy02-amd64-066) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022

# PHP中生成随机数的函数有rand()和mt_rand(),它们分别对应srand()和mt_strand()两个用于播种随机数种子的函数

 测试:

<?php
	mt_srand(372619038);//只要种子是相同的,那么生成的值就是一样的
	echo intval(mt_rand());
?>

 

尝试提交?r=999695185,提交后发现是没有回显,这个和PHP版本有关,换成PHP7(小皮——网站——管理——PHP版本)

提交?r=1155388967

考点:同一个随机数种子生成的随机数序列是一样的,和机器无关(虽然它是在服务器生成,我是在本机生成,但是只要种子一样,生成的随机数种子就是一样的)。

在日常开发中,一般不设置固定值种子,建议如果要设置的话就跟时间相关,这样可以保证更随机。

web25

 <?php
error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(hexdec(substr(md5($flag), 0,8)));//hexdec() 函数把十六进制转换为十进制
    $rand = intval($r)-intval(mt_rand());//如果r=0,那么值就是负的第一次的随机数
    if((!$rand)){  //r要和mt_rand()相等就可以输出flag
        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-135-generic (buildd@lcy02-amd64-066) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022 Linux version 5.4.0-135-generic (buildd@lcy02-amd64-066) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022

mt_srand()是伪随机,通过分发种子,如果有种子的话,生成随机数的值也是固定的,生成的值也和php的版本有关 

此题没有明确的给出种子,需要自己爆破(爆破随机数种子要用到php_mt_seed这款工具,在kali中安装)

$rand = intval($r)-intval(mt_rand());//如果r=0,那么值就是负的第一次的随机数

?r=0,就会得到第一个随机数1979052344

知道随机数要爆破随机数种子,用工具php_mt_seed

可以看到php3-php5没有找到随机数种子,从上一题知道应该是PHP7

seed = 0x0e8c5fc8 = 244080584 (PHP 7.1.0+)

<?php
    mt_srand(0xd951c381);
    mt_rand();//第一次生成的随机数
    echo mt_rand()+mt_rand();//返回第二次和第三次生成的随机数之和
?>

将第二次和第三次生成的随机数之和写入cookie

 web25没做出来,具体不知道哪出问题了?

web26

什么都不填,直接抓包:

至于为什么什么都不填就可以造成数据库连接成功,应该是写代码的时候代码的逻辑问题,此题也可以像web21一样使用burp爆破

web27

发现有一份录取名单,还有一个学时信息查询系统,可以根据此系统查询+名单得到线索

身份证六位被隐藏(出生年月),很明显可以用burp爆破,选择高先伊试一下

估摸着差不多1995-2006年这个范围去爆破一下,哎,burp线程调不了,换了个,这个爆破出来就行了。

此外h1xa师傅还写个个python脚本(生成合法身份证号码),用了校验和可以排除非法的身份证号码提高效率:

<?php
$card=array();
//生成所有的从1990年到2000年的身份证号码
for($y=1990;$y<2000;$y++){
	for($m=1;$m<13;$m++){
		if($m<10){
			$m='0'.$m;
		}
		for($d=1;$d<32;$d++){
			if($d<10){
				$d='0'.$d;
			}
			array_push($card,'621022'.$y.$m.$d.'5237');
		}
	}
}

//这个函数是根据身份证最后面1位的校验位来算是否是合法身份证,如果不是合法身份证可以通过这个函数来剔除
function checkCard($c){
	$list=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//定义一个数组里面有不同的权值,这个是每一个位数的权重,顺序是不能乱的
	$crc=[1,0,'X',9,8,7,6,5,4,3,2];//有一个校验码,每个人身份证的最后一位就是在十一个数字之内
	$ca=str_split($c);//接收到c,将c拆分为数组
	$sum=0;
	for($i=0;$i<count($ca);$i++){
		$sum+=$ca[$i]*$list[$i];//每个数组拿出来以后,和它的权重相乘,比如身份证第一位*7...,两两相乘求和
	}
	$crc_ =$sum%11;//取余之后得到最后一位的值,和传入的身份证最后一位进行比较,如果相等说明校验通过,否则false
	if($ca[count($ca)-1]==$crc[$crc_]){
		return true;
	}else{
		return false;
	}
	
}

//被刚才所有的身份证号进行校验和的验证,拿到合法的身份证号码
foreach($card as $c){
	if(checkCard($c)){
		echo $c.'<br>';
	}
}


?>

返回值是jason,直接在console台弹框就可以解码:console.log("....")

web28

 这个URL看着就古怪

这里0和1比较可疑,url后面不管输入什么都会跳转到/0/1/2.txt这个页面,接下来抓包

txt文件是固定的,改的话不好改,作为一个靶场环境肯定是动态环境,我们可以把2.txt删除,访问默认文件index.php

加入结束符:ctfshow

可以爆破知道:/72/20/index.php

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vite结合ts使用mock模拟数据,实现前后端异步开发

vite结合ts&#xff0c;vue3 使用mock模拟数据&#xff0c;实现前后端异步开发 第一步&#xff1a;安装依赖 安装mock&#xff1a;npm install mockjs --save-dev安装vite-mock插件&#xff1a;npm install vite-plugin-mock --save 注解1&#xff1a; npm 安装依赖包的时候…

消息中间件----内存数据库 Redis7(第3章 Redis 命令)

Redis 根据命令所操作对象的不同&#xff0c;可以分为三大类&#xff1a;对 Redis 进行基础性操作的命令&#xff0c;对 Key 的操作命令&#xff0c;对 Value 的操作命令。3.1 Redis 基本命令首先通过 redis-cli 命令进入到 Redis 命令行客户端&#xff0c;然后再运行下面的命令…

2023年浙江建筑八大员(市政质量员)考试试题题库及答案

百分百题库提供建筑八大员&#xff08;质量员&#xff09;考试试题、建筑八大员&#xff08;质量员&#xff09;考试预测题、建筑八大员&#xff08;质量员&#xff09;考试真题、建筑八大员&#xff08;质量员&#xff09;证考试题库等,提供在线做题刷题&#xff0c;在线模拟考…

如何在 Debian 11 上设置一个静态 IP 地址

当你在电脑上安装一个新的操作系统时&#xff0c;DHCP服务器会给你分配一个动态IP地址。然而&#xff0c;在各种情况下&#xff0c;你可能需要在你的机器上设置一个静态IP地址&#xff0c;例如&#xff0c;当你正在托管一个网络服务器&#xff0c;或者任何服务需要一个IP地址而…

K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示

K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示一、资源说明二、基本参数参数引脚说明三、驱动说明对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCAS608光学指纹模块1.2、STM32F103C8T6AS608光学指纹模块五、基础知识学习与相关资料下载六、视…

【自学Linux】Linux一切皆文件

Linux一切皆文件 Linux一切皆文件教程 Linux 中所有内容都是以文件的形式保存和管理的&#xff0c;即一切皆文件&#xff0c;普通文件是文件&#xff0c;目录是文件&#xff0c;硬件设备&#xff08;键盘、监视器、硬盘、打印机&#xff09;是文件&#xff0c;就连套接字&…

小红书数据平台:笔记爆文率提升的三大秘诀公式!

导语 对于小红书商家 / 博主来说&#xff0c;写出爆文就像买彩票&#xff0c;根本不能预知哪一篇会爆。2023年&#xff0c;小红书哪些内容会脱颖而出呢&#xff1f;我们又该如何把握热点趋势&#xff0c;实现优质内容转化出爆文~ 美妆作为小红书的长红赛道&#xff0c;本文我…

如何停止/重启/启动Redis服务

一、命令行直接启动/停止/重启redis 可以直接通过下面的命令启动/停止/重启redis /etc/init.d/redis-server start 启动redis服务 /etc/init.d/redis-server stop 停止redis服务 /etc/init.d/redis-server restart 重启redis服务1、启动redis服务…

BUUCTF-firmware1

题目下载&#xff1a;下载 新题型&#xff0c;记录一下 题目给出了flag形式&#xff0c;md5{网址&#xff1a;端口}&#xff0c;下载发现是一个.bin文件 二进制文件&#xff0c;其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件&#x…

40/365 javascript 数据类型

1.数据类型 number类型&#xff1a;整数&#xff0c;小数都属于这一类&#xff0c;不具体区分 字符串&#xff1a;hello, "hello" 布尔类型&#xff1a;true,false 逻辑运算符&#xff1a; && || ! 比较运算符&#xff1a; : 类型不一致&#x…

openGauss数据库共享存储特性简介

openGauss 3.1.1是openGauss 5.0.0 release版本的Preview版本&#xff0c;希望广大社区伙伴和开发者基于此版本进行场景化验证&#xff0c;提前发现问题并反馈社区&#xff0c;社区将在LTS版本发布前进行问题修复。当前文档说明范围仅限企业版。 文章目录版本介绍继承功能&…

轻松在 MAUI 应用中播放音视频,MediaElement 现已发布!

最受期待的 .NET MAUI 控件之一&#xff1a;MediaElement 现已发布。有了 MediaElement&#xff0c;您可以轻松地在 .NET MAUI 应用程序中播放音频和视频&#xff0c;在这篇文章中&#xff0c;您将了解到有关 MediaElement 第一个版本的所有信息以及我们对未来的计划&#xff0…

8086汇编-35更灵活定位内存地址04

#pragma once/*35-更灵活定位内存地址04不同的寻址方式的灵活应用如果我们比较一下前面用到的几种定位内存地址的方法&#xff08;可称为寻址方式&#xff09;&#xff0c;就可以发现有以下几种方式&#xff1a;&#xff08;1&#xff09;[idata] 用一个常量来表示地址&#xf…

新房装修流程详细步骤有哪些? 新房装修流程注意事项有哪些?

新房装修时&#xff0c;对于装修流程的详细步骤和装修过程中的一些注意事项&#xff0c;有必要了解一下&#xff0c;以免上当受骗&#xff0c;也免得考虑不周&#xff0c;后续造成一些隐患。新房装修流程详细步骤有哪些呢&#xff1f;1.新装装修流程第一步&#xff0c;首先&…

Java_Maven:4. maven 私服

目录 1 需求 2 分析 3 搭建私服环境 3.1 下载 nexus 3.2 安装 nexus 3.3 卸载 nexus 3.4 启动 nexus 3.5 仓库类型 4 将项目发布到私服 4.1 需求 4.2 配置 4.3 测试 5 从私服下载 jar 包 5.1 需求 5.2 管理仓库组 5.3 在 setting.xml 中配置仓库 5.4 测试从私…

C++之迭代器

迭代器C中&#xff0c;迭代器就是类似于指针的对象&#xff0c;但比指针的功能更丰富&#xff0c;它提供了对对象的间接访问&#xff0c;每个迭代器对象代表容器中一个确定的地址。举个例子&#xff1a;void test() {vector<int> vv{1,2,3,4,5};for(vector<int>::i…

大数据框架之Hadoop:MapReduce(一)MapReduce概述

1.1MapReduce定义 MapReduce是一个分布式计算框架&#xff0c;用于编写批处理应用程序&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一…

一文掌握如何对项目进行诊断?【步骤方法和工具】

作为项目经理和PMO&#xff0c;面对错综复杂的项目&#xff0c;需要对组织的项目运作情况进行精确的分析和诊断&#xff0c;找出组织项目管理中和项目运行中存在的问题和潜在隐患&#xff0c;分析其原因&#xff0c;预防风险&#xff0c;并且形成科学合理的决策建议和解决方案&…

day43【代码随想录】动态规划之一和零、完全背包理论基础

文章目录前言一、一和零&#xff08;力扣474&#xff09;二、完全背包前言 1、一和零 2、完全背包理论基础 一、一和零&#xff08;力扣474&#xff09; 求装满这个背包最多有多少个物品 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集…

Python实现查票以及自动购票....再也不用愁手速不够啦~

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 今天咱们来用Python做一个自动查票抢票的脚本&#xff0c;24小时抢票&#xff0c;谁抢的过你&#xff01; 准备工作 环境 Python 3.8 Pycharm 插件 谷歌浏览器驱动 模块 需要安装的第三方模块&#xff0c;直接pi…