NewStarCTF2023week2-R!!C!!E!!

打开链接,内容提示是信息泄露

查看源代码没有任何有用信息

打算先扫一下它的目录,发现扫不了

429 表示在一定的时间内用户发送了太多的请求,即超出了频次限制

那么关于信息泄露,我们收集信息有哪些思路方向呢?

1、robots协议

2、phpinfo文件

3、网站备份文件

4、源码泄露,常见的有:HG泄露;git泄露;DS_Store泄露

由于无法进行目录扫描,这里只能手动尝试:

1、手动测试一下是否存在robots.txt,没有找到

2、使用Wappalyzer看一下网站采用的平台架构、网站环境、服务器配置环境、javascript框架、编程语言等信息,是php语言,那么我们尝试访问是否存在phpinfo.php,也没有

3、常见的备份文件后缀:.rar;.zip;.7z;.tar.gz;.bak;.txt;.old;.temp;.phps;.swp

常见文件名:web;website;backup;back;www;wwwroot;temp;index

我之前遇到过的是index.php的备份文件,但是这里我们无法目录扫描,也不知道文件名,就算确实存在,可能的情况也太多,所以先跳过。

4、有一个叫dvcs-ripper 的工具可以处理很多类型的源码泄露

我们可以先简单测试一下,确定是哪个类型:

.hg没有

.DS_Store也没有

.git有,403禁止,也就是说我们没有权限,但是它确实存在这么一个文件

使用命令:

php 复制代码
./rip-git.pl -v -u http://31c01667-ebfb-40d0-8a73-62b25e5f4ce1.node4.buuoj.cn:81/.git

我那个git的指针好像存在问题,不知道有没有影响

很奇怪这里下载下来的index是个文件而不是文件夹,cat出来的内容有东西但是存在乱码

这应该就是一个文件夹,里面包含了三个文件,但是我不知道怎么给它还原

因为是git泄露,我们也可以使用Githack来获取文件源码信息

先移动到githack.py所在目录,使用python来运行该脚本,后面接url

复制代码
python githack.py http://31c01667-ebfb-40d0-8a73-62b25e5f4ce1.node4.buuoj.cn:81/.git/

查看下载的文件

php 复制代码
<?php
highlight_file(__FILE__);
if (';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star'])) {
    if(!preg_match('/high|get_defined_vars|scandir|var_dump|read|file|php|curent|end/i',$_GET['star'])){
        eval($_GET['star']);
    }
}

代码审计:

使用get请求给star传参;

preg_replace 函数:执行一个正则表达式的搜索和替换,\w表示非单词字符,单词字符包括:a-z、A-Z、0-9,以及下划线,加上取非^就成了匹配所有的单词字符,+表示可以进行多个匹配,还匹配了左括号和右括号 ,((?R)?)是正则表达式的一个递归子模式,将匹配到的东西替换为空,然后判断替换后内容是否等于分号;

再使用preg_match函数进行正则匹配,过滤掉了一些敏感的函数和关键字;

如果满足条件,则会调用eval函数,执行传入的内容。

注意:这里第一个匹配替换再进行比较的限制,并不是过滤掉了这些哦,而是让我们只能用这些字符,即所有单词字符、括号和分号,因为只有这样,替换之后才只剩下分号,才能与左边相等,使if语句成立,才会继续执行后面的代码。

此外,这里的代码是bo0g1pop.php的,所以我们的get请求也应该针对这个文件来发起请求。

这里没有过滤掉current,出题人过滤的是curent

列一下目录:

php 复制代码
?star=print_r(glob(dirname(chdir(dirname(getcwd())))));
php 复制代码
?star=
print_r(glob(dirname(chdir(dirname(current(localeconv()))))));

我不知道为什么这里只有一个点。。。就算没有子文件应该也有父目录

尝试读取文件:

php 复制代码
?star=show_source(next(array_reverse(glob(dirname(chdir(dirname(getcwd())))))));

说明返回了空

在网上找到了其他做法,但是绕过的方法目前还没想到,有大佬绕过成功了的话可以分享一下

相关推荐
合作小小程序员小小店20 分钟前
web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
开发语言·前端·数据库·mysql·html·php·电商
JaguarJack43 分钟前
15 个 Eloquent 高级技巧,瞬间提升你的 Laravel 应用性能
后端·php·laravel
爱吃甜品的糯米团子1 小时前
JavaScript 正则表达式:选择、分组与引用深度解析
前端·javascript·正则表达式
拾忆,想起1 小时前
TCP滑动窗口:网络世界的“智能流量阀门”
java·网络·数据库·网络协议·tcp/ip·php·哈希算法
闲人编程5 小时前
Python在网络安全中的应用:编写一个简单的端口扫描器
网络·python·web安全·硬件·端口·codecapsule·扫描器
Q_Q5110082858 小时前
python+django/flask的眼科患者随访管理系统 AI智能模型
spring boot·python·django·flask·node.js·php
高山上有一只小老虎9 小时前
java 正则表达式大全
java·正则表达式
JavaEdge.9 小时前
Cursor 2.0 扩展 Composer 功能,助力上下文感知式开发
php·composer
Q_Q51100828510 小时前
python+django/flask的在线学习系统的设计与实现 积分兑换礼物
spring boot·python·django·flask·node.js·php
网安小白的进阶之路10 小时前
A模块 系统与网络安全 第四门课 弹性交换网络-5
网络·安全·web安全