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

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.dtcms.com/a/357402.html

相关文章:

  • 串口通信1.0(串行并行)
  • 解决多种类潮湿敏感元器件的多温度、多时长的排潮烘干
  • 订餐后台项目-day02数据库模型定义笔记
  • DAY16-新世纪DL(DeepLearning/深度学习)战士:Q(机器学习策略)1
  • Go语言入门(13)-map
  • 科学融智学引领人机协同教育新范式
  • 吴恩达机器学习作业七:方差与偏差
  • 【上位机数据转换】数据结构原理及大小端
  • 《WINDOWS 环境下32位汇编语言程序设计》第8章 通用对话框
  • ssh端口转发的几种常用使用方式【本地端口转发、远程端口转发、反向端口转发、动态端口转发】
  • Jenkins 全方位指南:安装、配置、部署与实战应用(含图解)
  • Two-Twer模型做歌曲智能推荐与规则算法对比的优缺点分析
  • 对比rerank模型和embedding模型
  • 订餐后台管理系统 - day04退出登录与账号管理模块
  • C#简单组态软件开发
  • AlexNet:点燃深度学习革命的「卷积神经网络之王」
  • 50etf期权与现货套利是什么意思?
  • position属性
  • Linux学习:线程控制
  • FastAPI 入门科普:下一代高性能 Python Web 框架
  • 一般纳税人
  • 上海市赛/磐石行动2025决赛awd web2-python 4个漏洞详解
  • 漫谈《数字图像处理》之浅析图割分割
  • Java IO 流-详解
  • @GitLab 介绍部署使用详细指南
  • [Godot] C#获取MenuButton节点索引
  • 回车换行、缓冲区刷新、倒计时小程序
  • Woody:开源Java应用性能诊断分析工具
  • 智慧工地源码
  • STM32 USBx Device MSC standalone 移植示例 LAT1488