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

【Ctfshow_Web】信息收集和爆破

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()两个用于播种随机数种子的函数

 测试:

<?phpmt_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()相等就可以输出flagif($_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+)

<?phpmt_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;//取余之后得到最后一位的值,和传入的身份证最后一位进行比较,如果相等说明校验通过,否则falseif($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.lryc.cn/news/9881.html

相关文章:

  • 基于机器学习的推荐算法研究与实现
  • (二十四)ATP应用测试平台——springboot集成fastdfs上传与下载功能
  • linux好用命令+vs快捷键
  • Git 构建分布式版本控制系统
  • Day891.一主多从的切换正确性 -MySQL实战
  • 【论文笔记】图像修复Learning Joint Spatial-Temporal Transformations for Video Inpainting
  • 代码随想录算法训练营第二天 | 977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II、总结
  • Python pickle模块:实现Python对象的持久化存储
  • 【C++】C/C++内存管理
  • 【测试】自动化测试02
  • Python空间分析| 02 利用Python计算空间局部自相关(LISA)
  • idea快捷编码:生成for循环、主函数、判空非空、生成单例方法、输出;自定义快捷表达式
  • 【Spring】@Value注入配置文件 application.yml 中的值失败怎么办
  • CleanMyMac清理工具软件功能优势介绍
  • 【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解
  • SAP 理解合并会计报表
  • Ubuntu 命令常用命令——定时启动程序
  • 笔试题(十三):走迷宫
  • Gradle相关的知识学习
  • SpringMVC的工作原理
  • 问卷数据分析流程
  • 【观察】Solidigm P44 Pro SSD评测:原厂品质+软硬兼施=性能怪兽
  • String对象的创建和比较
  • 09 OpenCV图形检测
  • 解密Teradata与中国市场“分手”背后的原因!国产数据库能填补空白吗?
  • Bernstein-Vazirani算法
  • 华为OD机试 - 相对开音节 | 备考思路,刷题要点,答疑 【新解法】
  • MyBatis
  • 良好的作息表
  • 【郭东白架构课 模块一:生存法则】01|模块导学:是什么在影响架构活动的成败?