LFI-labs靶场通关教程

目录

CMD01-06

pass01

pass02

pass03

pass04

pass05

pass06

HDR-1

hdr-1

LFI-01-14

pass01

pass02

pass03

pass04

pass05

pass06

pass07

pass08

pass09

pass10

pass11

pass12

pass13

pass14


CMD01-06

pass01

看看源码,

这里显示的是一个get参数cmd,并且会进行执行于是就可以输入查看目录,whoami等一系列命令:

ls /``cat /flag即可得到flag:

pass02

看看源码:

这里是和上一题类似,只是方法该用了post方法,于是解题还是就可以使用上一题的方法

pass03

看看界面吧:

看起来还是一个输入界面,这里可以看看源码:

这里可以看出是将domain参数的值就直接拼接到了system函数里面,于是这里就可以执行多条命令,使用分号或者逻辑运算符号进行执行:;ls / ;cat /flag ;whoami

pass04

这一关是上一关的post版本, 解法和上一关类似

pass05

<?php
if (preg_match('/^[-a-z0-9]+\.a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|t[cdfghjklmnoprtvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]|biz|cat|com|edu|gov|int|mil|net|org|pro|tel|aero|arpa|asia|coop|info|jobs|mobi|name|museum|travel|arpa|xn--[a-z0-9]+$/', strtolower($_GET["domain"]))){ system("whois -h " . $_GET["server"] . " " . $_GET["domain"]); }else{echo "malformed domain name";}?>

这里对于domain的内容进行了很多匹配,要求将这里的domain:

满足一下条件:
以- 或字母数字为域名主体,点号后要有域名后缀,例如:
a[cdefgilmnoqrstuwxz]:匹配.ac、.ad、.ae等(以 a 开头的国家域名)
b[abdefghijmnorstvwyz]:匹配.ba、.bb、.bd等(以 b 开头的国家域名)
c[acdfghiklmnoruvxyz]:匹配.ca、.cc、.cd等(以 c 开头的国家域名)
最后将大写转换为小写

按理说这里的特殊符号应该是要被过滤的,但是这里竟然直接就可以绕过,应该是有些问题. 感觉应该将server中拼接命令,实现命令注入,但是这里可以直接通过domain参数进行注入,得到flag:;ls / ;cat /flag ;whoami

pass06

和pass05一样,改为post

HDR-1

hdr-1

源码是这样的

通过分析源码我们发现这里应该是获取cookie中的template的值,然后将其拼接到dirname函数里面,这个函数的意思是:以字符串的方式返回当前目录:不过这里的话使用dirname(__FILE__)获取目录应该更合适,还有array_key_exists函数的使用应该是:array_key_exists('TEMPLATE', $_COOKIE),否则会一直使用默认的模板,blue.php这道题有点问题

LFI-01-14

pass01

这里是个文件包含,看看源码有没有进行什么过滤的操作:

对源码进行一个分析,,可以看出这里是直接对一个page参数代入函数include,看来没有什么限制,于是就可将文件路径直接代入函数:

目录穿越:page=../../../../etc/passwd得到flag:page=../../../../flag

pass02

看看源码:

这里是一个get方法将得到的参数进行一个后缀的添加php,也就是只能执行php文件了

想法是仍然采用目录穿越,使用../../的方式,不知道有没有这里我们提前在本地建好一个test.php文件,可以试试

../../../../test这样呢就包含好了test,php文件,执行了test文件的内容

pass03

看看源码吧

可以看到这里是将输入参数的最后四位进行一个检验,是否是.php文件,如果不是的话就可以成功包含,这里可以是一句话木马,也可以是是图片马等,都会被解析为php文件,这里我们和上一关一样,包含test文件:使用大小写进行绕过:

这里的解法一般有以下几种思路:

  1. 使用大小写绕过 Php pHp等

  2. 空格绕过:php->php<空格>,这个得抓包后在hex中修改

  3. 加点饶工:php->php.

  4. 特殊字符绕过:php->php::$DATA

  5. 使用'.ph<'进使用'.ph<'进行.php拓展过滤渗出行.php拓展过滤渗出

  6. 使用%00进行截断绕过

pass04

看看源码:

这里是对get到的参数进行一个转义的操作,将特殊符号(预定义的单双引号,空值以及反斜杠)前面加一个反斜杠,最后处理完之后添加.php,当成php文件进行解析

但是这里仍然可以使用目录穿越,../../../../../test

pass05

看看源码:

这里的源码给了提示说这里将../进行了一个处理,被删除并且/不会被当做路径符号,而是会被加密为%2f,这里实际上可以使用双写进行绕过从而绕过str_replace函数的检验,并且这里直接包含文件名,不对文件内容进行一个检验,因此可以使用双写进行校验绕过:

....//....//....//test.php

pass06

第六关是一个post类型的传参,同样是无过滤

pass07

这里将路径末尾进行一个字符串拼接,直接拼接php,并且无过滤

pass08

看看源码

这里是对文件后缀进行了一个检验,要求不能是.php文件,于是这里可以使用php.来进行一个绕过FILE=../../../test.php.

pass09

与前面第四关相同

pass10

与第五关相似,使用双写绕过

pass11

这里看看源码是将真正的输入框隐藏起来,以此来达到混淆

这里就将另一个框输入路径:

这里将真正的参数进行了一个隐藏,给stylepath赋值好就可以了

pass12

上一题类似,方法为get方法

pass13

源码

这里是将文件名进行../替换,仍然是使用双写进行绕过

....//....//....//test.php

pass14

13关的post版本

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

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

相关文章

随机森林的 “Bootstrap 采样” 与 “特征随机选择”:如何避免过拟合?(附分类 / 回归任务实战)

随机森林的 “Bootstrap 采样” 与 “特征随机选择”&#xff1a;如何避免过拟合&#xff1f;&#xff08;附分类 / 回归任务实战&#xff09; 第一部分&#xff1a;揭开随机森林的神秘面纱 1.1 告别“过拟合”&#xff0c;拥抱更强大的模型 在机器学习的旅程中&#xff0c;…

Java开发 - 缓存

一、RedisUtil封装package com.qj.redis.util;import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component;import javax.annotation.Resource; import java.util.Set; import java.util.…

光伏发多少电才够用?匹配家庭用电需求

在“双碳”目标推动下&#xff0c;新能源产业迎来爆发式增长&#xff0c;家庭屋顶光伏凭借清洁环保、能降低电费的优势&#xff0c;成为越来越多家庭的选择。但很多家庭在安装前都会陷入一个核心困惑&#xff1a;到底装多大容量的光伏系统&#xff0c;发多少电才能刚好满足自家…

如何管理跨境电商多语种素材?数字资产本地化指南

核心要点&#xff1a; 问题&#xff1a; 多语言内容管理真的那么难吗&#xff1f;多语种内容素材杂乱、反复翻译浪费预算、上线延迟影响市场窗口期&#xff0c;跨境电商如何高效管理全球素材&#xff1f; 答案&#xff1a; 借助 AI 驱动的数字资产管理系统&#xff0c;跨境品…

Git 8 ,git 分支开发( 切换分支开发,并设置远程仓库默认分支 )

目录 前言 一、&#x1f4cd;环境背景 二、&#x1f4bb; 完整流程 三、&#x1f4dd; 顺序总览 四、&#x1f539;关系图例 五、❗暂存警告 六、☑️ 默认分支 七、&#x1f7e3;更多操作 前言 在团队开发或多人协作的项目中&#xff0c;Git 是最常用的版本管理工具。一个常见…

如何在mysql中执行创建数据库的脚本文件?

1、先准备好脚本文件&#xff0c;.sql扩展名的把脚本文件放在某个盘的根目录&#xff08;也可以不是根目录&#xff0c;根目录的话路径会简单一些&#xff09;,这里我放在C盘的根目录下。脚本文件内容如下&#xff1a;/* SQLyog Community v13.1.1 (32 bit) MySQL - 5.7.26 : D…

《AI智脉速递》2025 年 8 月22 日 - 29 日

欧盟 AI 法案正式生效&#xff1a;禁止社会评分&#xff0c;规范生成式 AI 内容标注 8 月 21 日&#xff0c;欧盟《人工智能法案》全面实施&#xff0c;明确禁止社会评分、实时面部识别等高风险 AI 应用&#xff0c;要求生成式 AI 内容必须标注来源。该法案被视为全球最严格的 …

iOS 审核 4.3a【二进制加固】

我们应该知道,面对iOS 上架 遇到4.3a的问题或者制作马甲包.最基础的操作就是混淆代码尤其是我们专业做上架的,需要对各种语言的编译模式,产物,以及ipa构成都需要非常了解, 每种语言开发的App的编译产物不同,针对不同的编译产物做不同的处理方式有一些经验的开发者, 应该知道 目…

使用Python脚本执行Git命令

说明&#xff1a;本文介绍如何使用Python脚本在某个目录下执行Git命令 编码 直接上代码 import os import subprocessdef open_git_bash_and_run_command(folder_path, git_command):# 检查文件夹路径是否存在if not os.path.exists(folder_path):print(f"错误&#xff1a…

2025docker快速部署Nginx UI可视化管理平台

1、nginx-ui简介 Nginx UI 是一个开源项目&#xff0c;旨在为著名的 Web 服务器和反向代理软件 Nginx 提供一个基于网页的图形化用户界面&#xff08;GUI&#xff09;。它的核心目标是让 Nginx 的配置和管理变得可视化、简单化和自动化&#xff0c;从而降低其使用门槛&#xf…

数据防泄与最小可见:ABP 统一封装行级安全(RLS)+ 列级脱敏

数据防泄与最小可见&#xff1a;ABP 统一封装行级安全&#xff08;RLS&#xff09; 列级脱敏 TL;DR&#xff1a;把“谁能看到哪些行、字段可见到哪一位”下沉到数据库强制层&#xff08;PostgreSQL&#xff1a;RLS 安全视图&#xff1b;SQL Server&#xff1a;RLS DDM&#x…

网络编程 04:TCP连接,客户端与服务器的区别,实现 TCP 聊天及文件上传,Tomcat 的简单使用

一、概述 记录时间 [2025-08-29] 前置文章&#xff1a; 网络编程 01&#xff1a;计算机网络概述&#xff0c;网络的作用&#xff0c;网络通信的要素&#xff0c;以及网络通信协议与分层模型 网络编程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分类&#xff0c;通过 …

最小生成树——Kruskal

标题什么是生成树&#xff1f; 对于一张无向图&#xff0c;由nnn个顶点和n−1n-1n−1条边构成地联通子图&#xff0c;叫做这个无向图 生成树 最小生成树就是指边权之和最小的生成树 如何求最小生成树&#xff1f; Kruskal 介绍: 存图时只存每条边地起点、终点&#xff0c;…

ADFS 和 OAuth 的区别

ADFS 和 OAuth 的区别 ADFS(Active Directory Federation Services)和 OAuth 都是身份认证与授权领域的技术,但它们的设计目标、应用场景和实现方式有显著区别。以下从核心定义、技术特性、应用场景等方面详细对比: 核心定义与设计目标 技术 核心定义 设计目标 ADFS 微软…

神经网络参数量计算详解

1. 神经网络参数量计算基本原理 1.1 什么是神经网络参数 神经网络的参数主要包括&#xff1a; 权重&#xff08;Weights&#xff09;&#xff1a;连接不同神经元之间的权重矩阵偏置&#xff08;Bias&#xff09;&#xff1a;每个神经元的偏置项批归一化参数&#xff1a;BatchNo…

手写链路追踪

1. 什么是链路追踪 链路追踪是指在分布式系统中&#xff0c;将一次请求的处理过程进行记录并聚合展示的一种方法。目的是将一次分布式请求的调用情况集中在一处展示&#xff0c;如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等。这样就可以轻松了解…

从零开始的python学习——常量与变量

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;python学习专栏&#xff1b; 文章目录 前言 一、常量和表达式 二、变量类型 2.1、什么是变量 2.2、变量语法 &#xff08;1&a…

基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信

1 系统功能介绍 本设计是一套 基于51单片机的环境监测系统&#xff0c;能够实时采集环境光照、PM2.5、温湿度等参数&#xff0c;并通过 2.4G无线模块 NRF24L01 实现数据传输。系统具备本地显示与报警功能&#xff0c;可通过按键设置各类阈值和时间&#xff0c;方便用户进行环境…

【Flask】测试平台开发,产品管理实现添加功能-第五篇

概述在前面的几篇开发文章中&#xff0c;我们只是让数据在界面上进行了展示&#xff0c;但是没有添加按钮的功能&#xff0c;接下来我们需要开发一个添加的按钮&#xff0c;用户产品功能的创建和添加抽公共数据链接方法添加接口掌握post实现和请求数据处理前端掌握Button\Dilog…

循环高级(2)

6.练习3 打印九九乘法表7.练习3 制表符详解对齐不了原因&#xff1a;name补到8zhangsan本身就是8&#xff0c;补完就变成16解决办法&#xff1a;1.去掉zhangsan\t,这样前后都是82.name后面加2个\t加一个\t&#xff0c;name\t就是占8个&#xff0c;再加一个\t&#xff0c;就变成…